Einkompilierte Textdatei in Textblock anzeigen

  • WPF
  • .NET (FX) 4.5–4.8

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von siycah.

    Einkompilierte Textdatei in Textblock anzeigen

    Hallo und Guten Morgen :)

    ich möchte eine Textdatei, die ich als Ressource festgelegt habe, in einem Textblock anzeigen. Dabei hab ich bei der Textdatei als BuildVorgang = Ressource festgelegt, weil die Datei soll später in die exe einkompiliert werden.

    Bin jetzt schon bestimmt anderthalb Stunden am Googlen, aber nichts will so recht funktionieren.

    Hat jemand vielleicht einen Tipp für mich?
    Ich bitte um mehr Details. Wenn ich ein WPF-VbNet-NetFramework-Projekt hernehme und in den Projekteigenschaften-Ressourcen-Tab gehe und da die Textdatei hinzufüge, kann ich im VB-Code ja schreiben: MeinTextblock.Text = My.Resources.NamederRessurce. Und das klappt dann auch. Im CodeEditor wird per MouseHovern dann sogar der Inhalt des Textes angezeigt.
    Bilder
    • TextFileAsResourceInTextBlock.png

      13,2 kB, 703×147, 67 mal angesehen
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.

    VaporiZed schrieb:

    gehe und da die Textdatei hinzufüge

    Bei mir kann man da keine Textdatei zufügen, nur einen String, aber ich denke das meintest du??

    Was für Details brauchst du? Ich hab im Internet zwar Einiges gefunden, aber nichts was meinen Anforderungen entspricht... Die Textdatei als eingebettete Ressource einbinden hab ich geschafft, nur eben nicht als Ressource. Ich will ja aber dass die Datei mit einkompiliert wird, und das ist bei der eingebetteten Ressource nicht der Fall...

    Am besten das ganze geht rein mit XAML, aber gegen Code Behind wäre auch nichts einzuwenden.

    kafffee schrieb:

    Bei mir kann man da keine Textdatei zufügen, nur einen String, aber ich denke das meintest du??
    Nö. Ich meinte Textdatei, siehe Anhang. Projekteigenschaften -> Ressourcen -> [Resource hinzufügen v] -> Vorhandene Datei hinzufügen … -> Textdatei auswählen.

    Einbindung in XAML (with a little help from stackoverflow):

    XML-Quellcode

    1. <TextBlock Text="{x:Static local:Resources.Beispieldatei}"/>

    VB.NET-Quellcode

    1. Public Class Resources
    2. Public Shared ReadOnly Property Beispieldatei As String
    3. Get
    4. Return My.Resources.Beispieldatei
    5. End Get
    6. End Property
    7. End Class
    Bilder
    • Resources.png

      17,16 kB, 531×336, 63 mal angesehen
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „VaporiZed“ ()

    Oh mann bin ich blind... :)

    Führt aber leider gleich zum nächsten:

    Bei mir werden im Textblock keine Umlaute angezeigt, stattdessen nur so kleine Fragezeichen.

    Hat das was mit der Art zu tun, wie die Textdatei gespeichert worden ist? Open Office bietet mir da an, als Textdatei oder als Textdatei kodiert zu speichern. Wenn ich kodiert wähle, kommt noch so ein kleiner Dialog, wo ich den Zeichensatz auswählen kann (siehe Anhang). Besser wärs aber natürlich man könnte da im Code was drehen...
    Bilder
    • textkodierung.png

      58,59 kB, 1.152×648, 54 mal angesehen
    Nachdem ich die Textdatei in den Ressourcen habe, tauchen sie in meinem Projektdatei-Explorer auf:

    Nach dem Kompilieren kommen auch Umlaute:

    Da sie aber eben noch als selbständige Datei existiert, kann ich in notepad auch die Codierung festlegen. Da steht erstmal ANSI drin und damit klappt es. Sobald ich auf UTF-8 gehe, geht es auch nicht mehr richtig.
    Entsprechend stackoverflow kann man aber das Ganze mit UTF-16 speichern und dann klappt das auch wieder, was ich bestätigen kann.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „VaporiZed“ ()

    Man sollte dazu erwähnen, dass .net intern (auch intern im Betriebssystem) mit UTF-16 arbeitet (heißt in der Microsoft-Welt Unicode).
    UTF-8 und UTF-16 sind größtenteils kompatibel.

    Bei ANSI handelt es sich um eine (IMO falsche) Bezeichnung für das Windows-12XX Codepage (meistens 1252). (Quelle: devblogs.microsoft.com/oldnewthing/20040531-00/?p=39103)
    Das ist z.T. kompatibel mit UTF-XXX, aber halt nicht ganz. Sollte auch gänzlich gemieden werden und stattdessen UTF-8 verwendet werden.

    Damit funktionieren 99% aller Dateien auch innerhalb des Codes.
    Quellcode lizensiert unter CC by SA 2.0 (Creative Commons Share-Alike)

    Meine Firma: Procyon Systems

    Selbstständiger Softwareentwickler & IT-Techniker.