Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Datei aus .res kopieren (https://www.delphipraxis.net/5100-datei-aus-res-kopieren.html)

Gast 23. Mai 2003 18:15


Datei aus .res kopieren
 
wie kann ich eine datei (zb. ein bild), das in einer .res datei steckt, "extrahieren" und in einen beliebien ordner kopieren?

wie man drauf zugreift oder verwendet ist klar, aber das kopieren...!?!?

Luckie 23. Mai 2003 20:28

Delphi-Quellcode:
procedure TForm1.LoadMaps(ID: Integer; MemoText, StatbarText: String);
var
  i : Integer;
  MapStream: TResourceStream;
  jpg : TJPEGImage;
begin
  Memo1.Text := MemoText;
  Statusbar1.Panels[0].Text := StatbarText;
  for i := 0 to 2 do
  begin
    MapStream := TResourceStream.Create(hInstance, 'MAP'+IntToStr(ID+i), 'JPEG');
    with TImage(FindComponent('Image'+IntToStr(i+1))) do
    begin
      try
        jpg := TJPEGImage.Create;
        try
          jpg.LoadFromStream(MapStream);
          Picture.Graphic := jpg;
        finally
          jpg.Free;
        end;
      finally
        MapStream.Free;
      end;
    end;
  end;
end;
Mußt du dir noch etwas zurecht basteln. Oder die nonVCL-Version?
Delphi-Quellcode:
{ following code is copied directly from Assarbad }
function putbinresto(binresname: string; path: string): boolean;
var ResSize, HG, HI, SizeWritten, hFileWrite: Cardinal;
begin
  result := false;
  //find resource
  HI := FindResource(hInstance, @binresname[1], 'BINRES');
  //if legal handle, go on
  if HI <> 0 then
  begin
    //load resource and check the handle
    HG := LoadResource(hInstance, HI);
    if HG <> 0 then
    begin
      //check resource size (needed to copy a block of data)
      ResSize := SizeOfResource(hInstance, HI);
      //create the file
      hFileWrite := CreateFile(@path[1], GENERIC_READ or GENERIC_WRITE,
        FILE_SHARE_READ or FILE_SHARE_WRITE, nil, CREATE_ALWAYS,
        FILE_ATTRIBUTE_ARCHIVE, 0);
      //if succeeded ...
      if hFileWrite <> INVALID_HANDLE_VALUE then
      try
        //write to it
        result := (WriteFile(hFileWrite, LockResource(HG)^, ResSize,
          SizeWritten, nil) and (SizeWritten = ResSize));
      finally
        //close file
        CloseHandle(hFileWrite);
      end;
    end;
  end;
end;

Gast 24. Mai 2003 23:52

:thuimb: danke! :hello:


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:04 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz