String in .exe speichern
-
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.