2010-09-10 3 views

Antwort

12

Verwenden Sie Delphes TResourceStream. Sein Konstruktor findet und lädt die Ressource in den Speicher, und die SaveToFile-Methode schreibt die Festplatte.

Etwas ähnliches wie dies funktionieren soll:

var 
    ResStream: TResourceStream; 
begin 
    ResStream := TResourceStream.Create(HInstance, 'YOURRESOURCENAME', RT_RCDATA); 
    try 
    ResStream.Position := 0; 
    ResStream.SaveToFile('C:\YourDir\YourFileName.jpg'); 
    finally 
    ResStream.Free; 
    end; 
end; 

Wenn Sie die Ressourcen-ID statt Namen verwenden können, ist es ein bisschen weniger Speicher ist. In diesem Fall würden Sie Create mit CreateFromID ersetzen und die numerische ID anstelle des Zeichenfolgennamens angeben.

+0

danke, Ken, klingt gut. BTW, Welchen Wert für HInstance? – Mawg

+3

Welchen Wert das OS Ihnen auch sagt, @Leonix. 'HInstance' ist eine globale Variable, die Delphi beim Start Ihres Programms initialisiert. Es ist in der * SysInit * -Einheit. –

+0

+1 und danke nochmal! – Mawg

4

Erstellen Sie eine TResourceStream. Sie benötigen das Modulinstanz-Handle (normalerweise SysInit.HInstance für die aktuelle EXE-Datei oder was auch immer Sie von LoadLibrary oder LoadPackage erhalten), den Ressourcentyp (z. B. oder rt_RCData) und entweder den Ressourcennamen oder die numerische ID. Rufen Sie dann die SaveToFile Methode des Streams auf.

2
try 
    if not Assigned(Bitmap) 
    then 
     Bitmap := TBitmap.Create(); 
    Bitmap.LoadFromResourceName(HInstance,SRC); 
except 
    on E:Exception do 
     ShowMessage(e.Message); 
end; 

Und dann speichern Sie die Bitmap auf der Festplatte.

Verwandte Themen