12
votes

Comment puis-je extraire une ressource dans un fichier à l'exécution?

Je veux distribuer uniquement une seule .exe, cependant, à l'exécution, j'aimerais qu'il extrait des ressources d'image intégrées sur le lecteur de disque dur des utilisateurs.

Puis-je, et si oui, comment?


0 commentaires

4 Réponses :


19
votes

Utilisez TresourceStream de Delphi. Son constructeur trouvera et chargera la ressource en mémoire et sa méthode de sauvetage fera l'écriture du disque.

Quelque chose de similaire à cela devrait fonctionner: P>

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;


1 commentaires

Quelle que soit la valeur que le système d'exploitation vous dit, @LEonix. Hinstance est une variable globale que Delphi s'initialise pour vous car votre programme démarre. C'est dans l'unité sysinit .



4
votes

Créer un TresourceStream . Vous aurez besoin de la poignée d'instance de module (généralement sysinit.hinstance pour le fichier EXE actuel, ou bien ce que vous obtenez de LoadLibrary ou LoadPackage ) , le type de ressource (tel que rt_bitmap ou rt_rcdata ) et soit le nom de la ressource ou le numéro numérique. Appelez ensuite le flux de Savetofile Méthode.


0 commentaires

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

0 commentaires

1
votes

Peut-être que cela pourrait être utile aussi si vous devez travailler avec les ressources elles-mêmes. Delfidabbler / ressources


0 commentaires