Salut,

J'ai creé un programme qui doit etre modifié ulterieurement pour inclure des nouveau fichiers.
En cherchant dans le forum, je décide que la meilleure solution est d'employer les ressources, quelques fonctions ont ete fournis ...

donc, pour l'editeur j'emploie :
*BeginUpdateResource
*UpdateResource
*EndUpdateResource

tout semble bien fonctionner puisque le fichier exe cible change de taille ...

Coté programme cible, j'ai essayé 2 methodes qui aboutissent au meme resultat : ressource introuvable
*Méthode 1 avec le constructeur de la classe TResourceStream
*Méthode 2 en employant les API :FindResource, LoadResource et LockResource.

J'ai déja employé les ressources, mais en utilisant les fichiers .RES et l'ajout de directive {$R fichier.res}, et tout etait dans l'ordre, donc je pense que le probleme vient de l'éditeur.

Voici le code de l'éditeur :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
function AddFile(SrcFile, DestFile, ResName: String): Boolean;
Var
  DestHandle: Integer;
  ResStream: TMemoryStream;
begin
  Result := False;
 
  DestHandle := BeginUpdateResource(PChar(DestFile), False);
  If DestHandle = 0 then
    Raise Exception.Create('Erreur de lecture de :'+DestFile);
 
  ResStream := TMemoryStream.Create;
  Try
    ResStream.LoadFromFile(SrcFile);
    if not UpdateResource(DestHandle, RT_RCDATA, PChar(ResName), 0,
             ResStream.Memory, ResStream.Size)  then
      Begin
        EndUpdateResource(DestHandle, True);
        Raise Exception.Create('Error while adding the resource');
      End;
    EndUpdateResource(DestHandle, False);
    Result := True;
  Finally
    ResStream.Free;
  End;
end;