Hallo!
Wie muss ich die Parameter für UpdateResource gestalten, damit ich mehrere Strings in die Resource schreiben kann?
Folgender Code funktioniert wunderbar für einen einzelnen String:
Delphi-Quellcode:
function TAnimalSelectionForm.WriteDataToExe: boolean;
var
hExeFile: THandle;
sBuffer: WideString;
pResourceID: PChar;
iDataSize: word;
begin
pResourceID := MakeIntResource(CONST_RESOURCE_NAME_INDEX);
// Im Buffer ist das erste Zeichen die Länge des Strings,
// gefolgt vom eigentlichen String (Unicode)
sBuffer := Chr(Length(sValue)) + sValue;
// Fragt mich nicht, warum die Größe so bestimmt wird,
// aber es ist so.
iDataSize := Length(sBuffer) *2 +1;
hExeFile := BeginUpdateResource(PChar(sExeFileName), false);
if hExeFile <> 0
then
begin
try
Result := UpdateResource(hExeFile, RT_STRING, pResourceID, LANG_NEUTRAL, PWideChar(sBuffer), iDataSize);
if not Result
then MessageDlg(RES_ERR_COUND_NOT_WRITE, mtError, [mbOK], 0);
finally
end;
end
else Result := false;
EndUpdateResource(hExeFile, false);
end;
Nur wie müssen Parameter für mehrere Strings gestaltet werden? Das ist nämlich recht blöde geregelt, da Strings als Resourcen immer in Gruppen von bis zu 16 Stück gespeichert sind...