String in .exe speichern
-
Hi,
ich muss in meinem Programm einen String speichern. Allerdings möchte ich dafür extra eine eigene .ini datei oder so anlegen.
Kann ich den String irgendwie in die .exe-datei speichern?
Vielleicht mit den Ressourcen oder so?
-
-
Genau das richtige, Danke.
-
Hm, war doch nicht genau das richtige.
Ich muss den String ja auch überschreiben können.
Also so ne Art SaveString. Gibt es das auch?
-
Hmmmm ich hab mal was über *UpdateResource-Funktionen gelesen. Schau dazu vielleicht mal in der Windows SDK-Hilfe nach oder hier: http://groups.google.com/groups?hl=de&lr=&ie=UTF8&oe=UTF8&q=Save+Resource+String&btnG=Google-Suche
-junix
-
Ich glaub da stand irgendwas davon, dass das nur bei WinNT geht.
Egal, ich speichers jetzt einfach in der Registry.
-
Hallo, wie geht das denn nun einen String in eine Exe zu speichern?
Ich habe das selbe problem, habe mir auch die Links durchgelesen, aber nur Bahnhof verstanden (Englischkentnise sind nicht so gut bei mir)Weiss jemand wie man das macht?
Schonmal Dank,
J0
-
Ich glaub' das geht nicht, solange Windowsprogramme laufen!?
Windoof haelt die EXE- Datei offen /blockiert, bis das Prog beendet wird.
Koennte in 'ner Konsolenanwendung gehen?
Also: INI- File oder Registry
-
Naja das müsste eigentlich Möglich sein!
Du könntest z.B. das FileLocking deaktivieren, die Datei bearbeiten und wieder Locken. Bei EXE-Dateien kannst du nach dem Ende der Datei ohne Probleme Text reinschreiben + lesen, dies erzeugt keine Probleme mit dem Proggi, da in der Exe Kern ja nur mit Adressen die oberhalb dieses Bereichs liegen gearbeitet wird. (Viren-Anhangsprinzip!)gruß
dose
-
ok, danke!
Werd´s mal so versuchen, thx, J0
-
Hmm... Also ich habe mal eine Anwendung geschrieben, die auf ihre eigene EXE zugegriffen hat um Datenpackete die ich von Hand angehängt hatte wieder wegzunehmen (so ähnlich wie selbstextrahierende Archiefe).
Dabei hat mein Program abc.exe sich selber mit fopen / fread geöffnet, und dann die letzten x Bytes gelesen und ausgewertet.
Das hatte soweit einwandfrei funktioniert! Schreiben sollte so auch möglich sein...
Was du jetzt machen kannst ist einfach den Text in der Form anzuhängen!
Lege z.B. Fest, dass die letzten 10Bytes im File die Startadresse deiner Textdaten beinhalten. Einlesen kannst du dann deine Daten von der in den letzten 10 Bytes definierten Position bis zu EXE Filesize -10.
Den Text kannst du dann ganz normal auswerten (kannst dir dann ja aussuchen, ob du deinen text Zeilenweise trennst, ein Trennzeichen wie \t usw...)Wenn du deine neuen Daten speichern willst überschreibst du einfach deinen Datenblock.
MfG
TKS
-
Kannst du mal deinen Append Kern-Code posten? (Bin so faul ;-> )
viele Grüße
dose
-
ganz dumme frage: was muss ich include un fread/fwrite zu benutzen?
oder bin ich so verpeilt, dass ich den wald vor lauter bäumen nicht sehe?
J0
-
Original erstellt von <J0>:
bin ich so verpeilt, dass ich den wald vor lauter bäumen nicht sehe?Offensichtlich, den entsprechenden Hinweis in der Hilfe kann man eigentlich nicht übersehen.
-
lol, wie easy!!!
habs jetzt ganz einfach mit nem TMemoryStream gemacht und dann per Write entsprechend Werte dazugeschrieben... funzt!J0
[Edit] Lol, hab mich TOTAL vertan. nix geht! ich versuchst mal weiter, werd aus der fread hilfe net schlau... naja, ich such mal weiter.[/Edit]
[Edit2]So, habs jetzt halb hinbekommen, benutze diesen code:
TMemoryStream * hallo = new TMemoryStream; hallo->LoadFromFile("C:\\hallo.bmp"); hallo->Position = hallo->Size; hallo->Write("hallo123",hallo->Size); hallo->SaveToFile("C:\\Kopie von Hallo.doc");
Jetzt wird aber das Bild doppelt so groß und der Text steht ungefähr in der mitte des Bildes (öffne das Bild mit dem Standart windows98 Word, nicht notepad)
Woran liegt das? (bestimmt am code :))
Und wie kann ich das beheben?[/Edit2][Edit3]Lol hab´s jetzt:
TMemoryStream * hallo = new TMemoryStream; hallo->LoadFromFile("C:\\hallo.bmp"); hallo->Position = hallo->Size; AnsiString Eintrag = "hallo123"; hallo->Write(Eintrag.c_str(),Eintrag.Length()); hallo->SaveToFile("C:\\Kopie von Hallo.doc");
Aber nach wie vor bekomm ich´s mit dem lesen noch net hin... aber dda guck ich auch mal. [/Edit3]
[ Dieser Beitrag wurde am 04.03.2003 um 21:09 Uhr von J0 editiert. ]
-
Hallo zusammen,
weiß jemand, wie ich diesen String nun wieder aus der EXE-Datei wieder auslesen kann? Bekomme das einfach nicht hin.
Bin für jede Antwort dankbar.
:xmas1:
-
Weiß nu jemand wie ich so einen Resource-String(wie in http://www.bcbdev.com/faqs/faq47.htm) einer anderen exe überschreiben kann???
-
@molto: Schau dir mal LoadLibrary und LoadString an, dass sollte dir weiterhelfen.
@nirsaja: das ist nicht so einfach, da du die UpdateResource-Funktionen nur bei Windows NT benutzer kannst. Bei meinen Iconbibliothekenersteller war das sehr kompliziert, da diese ja auch über die Ressource laufen.