Online
Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.453 Beiträge
Delphi 12 Athens
|
AW: Ressourcen-Datei - Zip hineinpacken und extrahieren per Code
14. Feb 2020, 23:29
Delphi-Quellcode:
{ Der ResType sollte immer ein PChar sein, damit man die vordefinierten Konstanten verwenden kann (RT_BITMAP, RT_STRING, RT_RCDATA, ...)
Dabei handelt es sich nicht wirklich um Strings, sondern um als Pointer (auf Strings) getarnte numerische Konstanten im niedrigen Wertebereich.
RT_RCDATA ist demnach als PChar(10) definiert - an Adresse 10 kann aber kein brauchbarer String im Speicher liegen und das weiß Windows.
Deswegen kann man diese Konstanten auch nicht in einen String packen und dann später wieder auf PChar casten.
}
function ExtractRes(ResType: PChar; const ResName, ResNewName: string): Boolean;
var
Res: TResourceStream;
begin
Res := TResourceStream.Create(hInstance, Resname, ResType);
try
Res.SavetoFile(ResNewName);
finally
Res.Free;
end;
Result := True;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
sResName: string;
sPathOfZipFileFromRes: string;
begin
sResName := 'MYTEST';
sPathOfZipFileFromRes := ExtractFilePath(ParamStr(0)) + 'MyTest.zip'; // ExtractFilePath enthält bereits den Backslash
// Extrahieren der Zip-Datei aus der Ressourcen-Datei.
if ExtractRes(RT_RCDATA, UpperCase(sResName), sPathOfZipFileFromRes) then // RT_RCDATA ist die vordefinierte Konstante für RCDATA Resourcen
begin
// Code zum Extrahieren der Daten aus der Zip-Datei.
// ...
end;
end;
|
|
Zitat
|