![]() |
UpdateResource: Daten einbinden
Hallo,
ich möchte Daten in einer exe-Datei ändern (die auch von mir stammt). Dazu will ich diesen Code benutzen:
Delphi-Quellcode:
Allerdings scheint es so, dass ich keine neuen Datensätze hinzufügen kann, sondern nur bestehende ändern. Ich habe zum Test auf irgendeine exe-Datei den obigen Code angewendet und im Hex-Editor festgestellt, dass die Daten nicht hinzugefügt worden sind.
function SetRes(filename, resname, resvalue: string): boolean;
var hUpdate: THandle; Size: DWord; begin hUpdate := BeginUpdateResource(PChar(filename), false); // <-- oder auf true? if (hUpdate <> 0) and (hUpdate <> INVALID_HANDLE_VALUE) then begin try Size := Succ(Length(resvalue)) * SizeOf(char); Result := UpdateResource(hUpdate, RT_RCDATA, PChar(resname), 0, PChar(resvalue), Size); finally EndUpdateResource(hUpdate, False); end; end; end; Wie muss ich mein Programm, in das die Daten geschrieben werden sollen, also darauf vorbereiten/ihm erlauben, in es geschrieben zu werden ? Vielen Dank |
AW: UpdateResource: Daten einbinden
Was sagt denn GetLastError, wenn UpdateResource fehlschlägt? Übrigens ist die "Remarks"-Sektion im
![]() |
AW: UpdateResource: Daten einbinden
Liste der Anhänge anzeigen (Anzahl: 1)
Zunächst noch:
1. Idee: siehe Anmerkung im Quelltext, möglicherweise false auf true umstellen ? 2. Idee: Ist es denn überhaupt möglich, solche Daten mit UpdateResource in irgendeine exe-Datei hinzuzufügen ? Und schließlich: 3. UpdateResource schlägt nicht fehl. Mit meiner Funktion setres bekomme ich True zurück. Edit: 4. Ich habe herausgefunden, dass die Daten doch in die exe geschrieben werden (fast ganz ans Ende), konnte sie aber nicht finden da der Resourcenname mit Leerzeichen aufgefüllt war. So sieht es aus: (siehe Anhang) Dabei ist der Resourcenname "resname1", der zugehörige Wert "resvalue1". |
AW: UpdateResource: Daten einbinden
Zu 1: wenn ich das MSDN richtig verstehe, sollte das in Deinem Fall egal sein, da Du ja eh UpdateResource aufrufst.
Zu 2: ich habe dort auf die Schnelle nichts Gegenteiliges gelesen. Zu 3: auch dann, wenn Du sie mal ordentlich initialisierst? |
AW: UpdateResource: Daten einbinden
Siehe Edit im obigen Post.
Wie kann ich nun die Daten im Programm auslesen, in das sie geschrieben worden sind ? |
AW: UpdateResource: Daten einbinden
Zitat:
|
AW: UpdateResource: Daten einbinden
Ja, den gibt es.
Mein Code bis jetzt:
Delphi-Quellcode:
Fehlermeldung:
procedure TForm1.Button1Click(Sender: TObject);
var RS: TResourceStream; s: string; begin RS := TResourceStream.Create(HInstance, Edit1.Text, RT_RCDATA); SetString(s, RS.Memory, RS.Size); ShowMessage(s); end; Resource "...(der Name von Edit1.Text)" not found. Warum wird sie nicht gefunden ? Es ist definitiv der gleiche Name, den die gesuchte Resource hier trägt und die, die ich eingetragen habe. Edit: Die Fehlermeldung über Getlasterr.r: Der angegebene Ressourcentyp wurde nicht in der Image-Datei gefunden. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:42 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz