2010-09-10 10 views

Trả lời

12

Sử dụng TresourceStream của Delphi. Đó là hàm tạo sẽ tìm và nạp tài nguyên vào bộ nhớ, và phương thức SaveToFile của nó sẽ làm ghi đĩa.

Something tương tự như này nên làm việc:

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; 

Nếu bạn có thể sử dụng ID tài nguyên thay cho tên, đó là một chút ít bộ nhớ. Trong trường hợp đó, bạn nên thay thế Tạo bằng CreateFromID và cung cấp ID số thay vì tên chuỗi.

+0

cảm ơn, Ken, âm thanh tuyệt vời. Btw, Giá trị gì cho HInstance? – Mawg

+3

Bất kể giá trị nào của hệ điều hành đều cho bạn biết, @Leonix. 'HInstance' là một biến toàn cục mà Delphi khởi tạo cho bạn khi chương trình của bạn khởi động. Nó ở trong đơn vị * SysInit *. –

+0

+1 và cảm ơn một lần nữa! – Mawg

4

Tạo một TResourceStream. Bạn sẽ cần xử lý đối tượng mô-đun (thường là SysInit.HInstance cho tệp EXE hiện tại hoặc bất kỳ thứ gì bạn nhận được từ LoadLibrary hoặc LoadPackage), loại tài nguyên (chẳng hạn như rt_Bitmap hoặc rt_RCData) và tên tài nguyên hoặc ID số. Sau đó, gọi phương thức SaveToFile của luồng.

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

Sau đó lưu Bitmap vào đĩa.