Textdatei aus Ressourcen laden
-
Hallo,
ich würde gerne eine Textdatei in den Ressourcen speichern und später aus den Ressourcen laden. Ich habe schon einigens gefunden um Bitmaps aus Ressourcen zu laden. Aber wie muss ich das mit Textdateien machen?
-
Platziere die Datei in den Ressourcen als Typ RCDATA.
Anschließend verwendest Du FindResource und LoadResource um die Resource zu laden. Die Größe der Resource bestimmst Du mit SizeOfResource.
-
Guckst Du hier: http://www.c-plusplus.net/forum/viewtopic-var-t-is-128703-and-highlight-is-*resource*-and-sid-is-cbfe0a55f70bd3a4453a92440aaad217.html
-
Leider bekomme ich keine textdatei in die Ressourcen. Da habe ich eine Auswahl von Möglichkeiten, aber keine Möglichkeit eine Textdatei zu erstellen.
-
Kontextmenü im Ressource Explorer öffnen.
Add resource wählen
Custom Resource auswählen
Typ: RCDATA angeben
Nun in Properties einfach den Dateinamen angeben den Du einlesen möchtest.
-
Ich mache das so, dass ich mir einen eigenen Typ definiere und den Zeichenweise einlese bis ein \0 kommt. Das funktioniert auch ganz gut.
Das mit der Größe ist aber performanter, besonders weil man schon vorher Speicher reservieren kann.
-
Und es ist nicht gesichert, dass überhaupt eine 0 kommt. Wenn die Datei auf einer Blockgrenze liegtund genau eine Speicherseite ausfüllt werden keine extra 0 Zeichen angehängt. IMHO wird sogar nur auf 8 Byte aufgefüllt!
-
Das ist mir auch aufgefallen. Ist lustig, dass freier Platz da mit "PADDING" gefüllt wird ^^.
Gelöst habe ich das Problem, indem ich selber sichergestellt habe, dass eine \0 vorkommt, nachdem ich die Textdatei als "Text" Resource geladen habe. Den Typ habe ich einfach selber erstellt.Diese hier aufgeführte Variante ist natürlich viel besser.
-
Hallo, nun habe ich wirklich alles versucht diese sch**** Textudatei in meine Ressourcen zu bekommen. Als RCDATA und als CDATA und was für DATA noch alles. Nur hat der Inhalt dann eine Menge Zahlen undzwar Hexdezimal und hinten hängt immer ein Stück vom Text der Textdatei. Und wenn ich versuche diese Datei zu laden, wie oben beschrieben und in dem Link, läuft es immer dahin hinaus das am Ende diese Textdatei doch auf der Festplatte zu sehen ist. Weil ich mit CreatFile() das Ding dahin schreibe.
Gibt es keine Möglichkeit eine Textdatei in die Exe reinzubauen. Damit nicht gleich jeder da reinschauen kann.
-
Willst du etwa die Textdatei zur Laufzeit in den Resourcen auch speichern? Weiss nicht ob das geht... wenn dann aber sicher nicht über CreateFile.
Wenns dir nur darum geht dass niemand so einfach reingucken kann wäre es wohl besser die Datei zu verschlüsseln. Und wenns dir nur darum geht dass niemand die Datei ändern kann, dann brauchst du sie bloss zu signieren.
Für beides eigenet sich recht gut die gute alte cryptlib: http://www.cryptopp.com/
-
hustbaer schrieb:
Willst du etwa die Textdatei zur Laufzeit in den Resourcen auch speichern? Weiss nicht ob das geht... [...]
Klar geht das...
BeginUpdateResource, UpdateResource, EndUpdateResource und Co.Allerdings geht das logischerweise nicht, wenn Dein Programm bereits läuft, aber das ist ja nicht das Problem
.