Visual Basic 2010 In Resourcen Datei Bilder speichern und auch wieder auslesen

  • VB.NET

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von exc-jdbi.

    Visual Basic 2010 In Resourcen Datei Bilder speichern und auch wieder auslesen

    Hallo,

    ich habe ein Tutortial gefunden wie man Daten in einer Resourchen Datei speichern kann eigentlich die perfekte Sace doch.. Ich würde darin sehr gerne Bilder speichern und diese wieder auslesen können..

    VB.NET-Quellcode

    1. Dim ResWr As New Resources.ResourceWriter("TestResDatei.res")
    2. Private Sub Button3_Click(sender As System.Object, e As System.EventArgs) Handles Button3.Click
    3. ResWr.AddResource(TextBox4.Text, TextBox3.Text)
    4. ResWr.Close()
    5. End Sub
    6. Private Sub Button4_Click(sender As System.Object, e As System.EventArgs) Handles Button4.Click
    7. Dim ResRead As New Resources.ResourceReader("TestResDatei.res")
    8. Dim Ider As IDictionaryEnumerator = ResRead.GetEnumerator
    9. While Ider.MoveNext
    10. Select Case Ider.Key
    11. Case "URL"
    12. TextBox3.Text = Ider.Value.ToString()
    13. ResRead.Close()
    14. End Select
    15. End While
    16. End Sub


    achja und dazu gesagt wie könnte ich es machen das die aktuelle Resourcen datei nicht überschreiben wird wenn ich wieder darauf schreiben will?

    Danke im vorraus
    Wenn ich dir auf irgendeiner Art und Weise helfen konnte, drück doch bitte den "Hilfreich" Button :thumbup:

    Für VB.NET Entwickler: Option Strict On nicht vergessen!

    ClonkAndre schrieb:

    Ich würde darin sehr gerne Bilder speichern und diese wieder auslesen können.
    Was genau meinst Du damit?
    Füge Bilder den Ressourcen Deines Programmes hinzu und Du kannst damit tun was immer Du willst.
    Die Entwicklungsumgebung verwaltet die Bilder so, dass Du unbeschränkten Zugriff drauf hast.
    Oder willst Du das ganze neu erfinden?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Finde dein Vorhaben auch etwas seltsam. Was ist den am Ende das Ziel?

    Weil, zum Speichern von Daten würde ich nie die Ressourcen verwenden. Da kommt bei mir nur rein, was ich "fest" brauche. Z.B. Bildle für die GUI. Und die kommen nicht zur Laufzeit rein, sondern wenn ich die GUI baue...
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen
    Hört sich für mich auch irgendwie an, als ob der Wunsch hier wäre, die bilder während der Laufzeit einzukompilieren. Das geht gar nicht.

    Bilder sollten separat abgespeichert werden, oder gleich von Anfang an (wenn man weiss das es so bleibt) in die Recource eingebunden werden.

    Freundliche Grüsse

    exc-jdbi
    Also mein Gedanke war so, das man alle Bilder oder im dem Fall "Texturen" in einer Datei hat und nicht alle blank in einem Ordner liegen. So wie in Minecraft da ist ja auch alles in einer .jar Datei drinne.
    Wenn ich dir auf irgendeiner Art und Weise helfen konnte, drück doch bitte den "Hilfreich" Button :thumbup:

    Für VB.NET Entwickler: Option Strict On nicht vergessen!
    Ja dann mach das doch manuell. Verstehe das Problem jetzt nicht so wirklich. Hier verweise ich auf Rods Post:

    RodFromGermany schrieb:

    Füge Bilder den Ressourcen Deines Programmes hinzu und Du kannst damit tun was immer Du willst.
    Die Entwicklungsumgebung verwaltet die Bilder so, dass Du unbeschränkten Zugriff drauf hast.
    Oder willst Du das ganze neu erfinden?
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen
    Hallo @ClonkAndre

    Ich habe mich noch nicht wahnsinnig mit den beiden Klassen ResourceWriter und ResourceReader befasst. Aber wenn es wirklich so ist, dass AddResource immer mit dem Erstellen einer neuen Resource-Datei verbunden ist, so gibt es wohl keine andere Möglichkeit das Ganze per Code zu lösen.

    In diesem Falle gibt es sicher mal zwei Möglichkeiten zum vorgehen.
    1. Versuch das mal anfangs mit einem Dictionary umzusetzen. (Sofern du unsicher bist)
    2. Wenn das geklappt hat, den Code so umstrukturieren, dass Dictionary nicht mehr gebraucht wird.

    Der einzige eventuelle Nachteil ist, dass die Resource-Datei immer komplett eingelesen werden muss. Also für das Adden von neuen Bilder, wie auch für das Löschen von Bilder di drin sind.

    Sollte das alles nicht möglich sein, dann bleibt wohl nichts anderes übrig, als die Bilder in die Resource der Solution einzubinden, oder die Bilder separat in einem Verzeichnis auf die du dann per Link (einen Pfad-String) zugreifst und dir in das Program lädst, je nachdem um was es sich halt bei dir für ein Programm handelt.

    Freundliche Grüsse

    exc-jdbi

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „exc-jdbi“ ()

    exc-jdbi schrieb:

    Aber wenn es wirklich so ist,
    Im Designer kommen alle Ressourcen in eine Datei.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    ClonkAndre schrieb:

    So wie in Minecraft da ist ja auch alles in einer .jar Datei drinne.


    @ClonkAndre

    Wenn du es herausfinden willst, dann geh meinem Vorschlag nach. Das wäre die Einbindung von Bilder während der Laufzeit, wie z.B. bei einem Chat, wo man nicht unbedingt im Vorfeld weiss, welche Bilder die Chat-User selber einbinden und die Bilder auch nicht sehr gross sind. Dein vorgeschlagener Weg wäre sicher eine Möglichkeit.

    Wenn die Anzahl der Bilder die schlussendlich gebraucht werden bekannt sind, dann mach es doch so wie RFG vorschlägt.

    Edit: Bei grossen Bilder könnte man gleich das Serialisieren nutzen. Da würde natürlich auch für Kleine Bilder problemlos funktionieren.


    Freundliche Grüsse

    exc-jdbi

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „exc-jdbi“ ()