IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Delphi Discussion :

Fichier ressource a l'exécution


Sujet :

Delphi

  1. #1
    Membre confirmé Avatar de poly128
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    102
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 102
    Par défaut Fichier ressource a l'exécution
    Je fait un programme qui fait des diaporamas. Il peut afficher des images soit au format jpg ou bmp. Mais pour que ca fonctionne il faut que j'aille un gros répertoire de photos a coté de mon exe. J'aimerai savoir si c'est possible de mettre toute les photos dans l'exécutable lui même pendant l'exécution et si oui comment ?

  2. #2
    Expert confirmé

    Avatar de sjrd
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2004
    Messages
    4 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Suisse

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2004
    Messages : 4 517
    Par défaut
    Comment insérer une ressource dans un exécutable ?
    Plus F1 sur TResourceStream et méthodes faisant appel aux ressources.
    sjrd, ancien rédacteur/modérateur Delphi.
    Auteur de Scala.js, le compilateur de Scala vers JavaScript, et directeur technique du Scala Center à l'EPFL.
    Découvrez Mes tutoriels.

  3. #3
    Membre confirmé Avatar de poly128
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    102
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 102
    Par défaut
    A moin que je me trompe, les liens que tu ma donné ne permette pas de mettre un fichier dans l'exe pendant sont execution, mais seulement avant.

  4. #4
    Membre émérite Avatar de Yurck
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 16
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2005
    Messages : 682
    Par défaut
    Bonjour,

    Mettre des images dans un exécutable pendant son exécution c'est déjà ce que tu fais.
    Maintenant tu ne veux pas les mettres dans un TImage ou autre composant mais dans les ressources du programme. Bien que cela soit faisable (dans la mesure ou tu aurais anticipé la place nécessaire), c'est bien inutile et compliqué.

    Pourquoi ne pas charger une liste d'objet au lancement de ton programme ?
    En effet pour mettre des images dans un exécutable pendant son exécution il faut auparavant qu'elle soit à l'extérieure et les localiser puius les charger.
    Au risque de me répéter c'est déjà ce que tu fais.

    enfin bon !

    a+

  5. #5
    Expert confirmé

    Avatar de sjrd
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2004
    Messages
    4 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Suisse

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2004
    Messages : 4 517
    Par défaut
    Citation Envoyé par poly128
    A moin que je me trompe, les liens que tu ma donné ne permette pas de mettre un fichier dans l'exe pendant sont execution, mais seulement avant.
    Euh oui j'avais mal compris ton problème

    Mais cela dit du coup je suis assez d'accord avec Yurck : mettre 36 000 photos en ressources de l'exe plutôt que de les charger depuis un dossier, c'est se compliquer la vie pour rien.

    Ce que tu pourrais faire, c'est rassembler ces photos dans .zip ou un .tgz et ne livrer que l'exe + le zip. Il y a des composants Delphi qui gèrent ces formats de fichiers.
    sjrd, ancien rédacteur/modérateur Delphi.
    Auteur de Scala.js, le compilateur de Scala vers JavaScript, et directeur technique du Scala Center à l'EPFL.
    Découvrez Mes tutoriels.

  6. #6
    Membre confirmé Avatar de poly128
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    102
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 102
    Par défaut
    Le programme qui creer les diaporamas fonctionne comme vous le dites. Il va chercher les photos partout sur le disque dur. Mais ce ne sera pas le programme qui creer les diaporamas qui vat contenir toutes les ressources mais un deuxieme programme nommé par exemple: noël 2006 ou voyage de pêche. L'utilisateur n'a qu'a cliquer sur l'exe et le diaporama démare, il na pas besoin de se soucier d'amener toutes les photos avec lui s'il veut avoir sont diaporama sur un autre ordinateur.

    Ce n'est pas pour la simplicité de programmation que je veut faire ca, c'est pour la simplicité d'utilisation.

    Oui bon d'accord c'est vrai que l'exe aurat une taille monstrueuse, mais bon.

  7. #7
    Expert confirmé

    Avatar de sjrd
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2004
    Messages
    4 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Suisse

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2004
    Messages : 4 517
    Par défaut
    Dans ce cas, regarde du côté des API qui tournent autour de BeginUpdateResource.
    sjrd, ancien rédacteur/modérateur Delphi.
    Auteur de Scala.js, le compilateur de Scala vers JavaScript, et directeur technique du Scala Center à l'EPFL.
    Découvrez Mes tutoriels.

  8. #8
    Membre confirmé Avatar de poly128
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    102
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 102
    Par défaut
    Bon d'accord j'ai trouvé ces fonctions la.

    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
     
    ///////////////////////////////////////
    /// Ajout-suppression de ressources ///
    ///////////////////////////////////////
    {$IFDEF MSWINDOWS}
     
    function BeginUpdateRes(const FileName : string) : integer;
    begin
      // Appel de Windows.BeginUpdateResource
      Result := BeginUpdateResource(PChar(FileName), False);
      // Si Result = 0, il y a eu une erreur API
      if Result = 0 then
        raise EUpdateResError.Create;
    end;
     
    procedure AddResource(ResHandle : integer; const ResName : string;
      Resource : TStream; const ResType : string = 'RT_RCDATA');
    var MemRes : TMemoryStream;
        MustFreeRes, OK : boolean;
    begin
      MustFreeRes := False;
      // On met dans MemRes un flux mémoire qui contient les données de la ressource
      if Resource is TMemoryStream then MemRes := Resource as TMemoryStream else
      begin
        MemRes := TMemoryStream.Create;
        MemRes.LoadFromStream(Resource);
        MustFreeRes := True;
      end;
      // Appel de Windows.UpdateResource
      OK := UpdateResource(ResHandle, PChar(ResType), PChar(ResName), 0,
                           MemRes.Memory, MemRes.Size);
      // On supprime le flux mémoire si on l'a créé
      if MustFreeRes then MemRes.Free;
      // Si UpdateResource a renvoyé False, il y a eu une erreur
      if not OK then raise EUpdateResError.Create;
    end;
     
    procedure DelResource(ResHandle : integer; const ResName : string);
    begin
      // Appel de Windows.UpdateResource
      if not UpdateResource(ResHandle, '', PChar(ResName), 0, nil, 0) then
      // Si UpdateResource a renvoyé False, il y a eu une erreur
        raise EUpdateResError.Create;
    end;
     
    procedure EndUpdateRes(ResHandle : integer; Cancel : boolean = False);
    begin
      // Appel de Windows.EndUpdateResource
      if not EndUpdateResource(ResHandle, Cancel) then
      // Si EndUpdateResource a renvoyé False, il y a eu une erreur
        raise EUpdateResError.Create;
    end;
     
    procedure AddResToFile(const FileName, ResName : string; Resource : TStream;
      const ResType : string = 'RT_RCDATA');
    var ResHandle : integer;
    begin
      ResHandle := BeginUpdateRes(FileName);
      try
        AddResource(ResHandle, ResName, Resource, ResType);
        EndUpdateRes(ResHandle);
      except
        try EndUpdateRes(ResHandle, True) except end;
        raise;
      end;
    end;
     
    procedure DelResInFile(const FileName, ResName : string);
    var ResHandle : integer;
    begin
      ResHandle := BeginUpdateRes(FileName);
      try
        DelResource(ResHandle, ResName);
        EndUpdateRes(ResHandle);
      except
        try EndUpdateRes(ResHandle, True) except end;
        raise;
      end;
    end;
     
    {$ENDIF}

    Mais est que ce sont les bonnes pour faire ce que je veut faire. J'ai essayé plein de chose mais je n'ai rien reussi . Qu'est que je fait avec? Google ne parle pas beaucoup de ca. Merci d'avance

  9. #9
    Expert confirmé

    Avatar de sjrd
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2004
    Messages
    4 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Suisse

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2004
    Messages : 4 517
    Par défaut
    Tiens c'est marrant ce sont les miennes
    Oui ce sont bien celles-là dont tu as besoin
    sjrd, ancien rédacteur/modérateur Delphi.
    Auteur de Scala.js, le compilateur de Scala vers JavaScript, et directeur technique du Scala Center à l'EPFL.
    Découvrez Mes tutoriels.

  10. #10
    Membre confirmé Avatar de poly128
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    102
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 102
    Par défaut
    Ouf au moins j'ai trouvé les bonne .
    Mais, je ne comprend pas comment m'en servir, je voit qu'elle ajoute des ressource, qu'elle en suprime mais bon a part ca je comprend rien d'autre . J'ai pas beaucoup d'expérience d'en ce ¨tipe¨ de programmation . Tu pourait pas me dire comment les faire fonctionner.

  11. #11
    Expert confirmé

    Avatar de sjrd
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2004
    Messages
    4 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Suisse

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2004
    Messages : 4 517
    Par défaut
    La méthode AddResToFile ajoute directement au fichier donné en paramètre une ressource avec ses nom, contenu et type donnés. Le type RCDATA correspond à un type personnalisé. Ensuite, tu peux récupérer la ressource avec un TResourceStream : dans l'aide de celui-ci tu auras un peu plus de détails sur le fonctionnement des ressources.

    PS : je remarque qu'il y a une erreur dans la version ci-dessus : c'est 'RCDATA' et non pas 'RT_RCDATA' (RT_RCDATA est une constante de type PChar qui vaut pour 'RCDATA'). La version actuelle suit :
    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    {$REGION 'Modification des ressources'}
     
    {---------------------------------}
    { Ajout-suppression de ressources }
    {---------------------------------}
    {$IFDEF MSWINDOWS}
     
    {*
      Débute la mise à jour des ressources d'un fichier module
      Tout appel à BeginUpdateRes doit être compensé par un appel à EndUpdateRes.
      @param FileName   Nom du fichier module
      @return Handle de ressources
    *}
    function BeginUpdateRes(const FileName : string) : integer;
    begin
      // Appel de Windows.BeginUpdateResource
      Result := BeginUpdateResource(PChar(FileName), False);
      // Si Result = 0, il y a eu une erreur API
      if Result = 0 then
        raise EUpdateResError.Create;
    end;
     
    {*
      Ajoute une ressource
      @param ResHandle   Handle de ressources obtenu par BeginUpdateRes
      @param ResName     Nom de la ressource à ajouter
      @param Resource    Flux contenant la ressource
      @param ResType     Type de ressource
    *}
    procedure AddResource(ResHandle : integer; const ResName : string;
      Resource : TStream; const ResType : string = 'RCDATA');
    var MemRes : TMemoryStream;
        MustFreeRes, OK : boolean;
    begin
      MustFreeRes := False;
      // On met dans MemRes un flux mémoire qui contient les données de la ressource
      if Resource is TMemoryStream then MemRes := Resource as TMemoryStream else
      begin
        MemRes := TMemoryStream.Create;
        MemRes.LoadFromStream(Resource);
        MustFreeRes := True;
      end;
      // Appel de Windows.UpdateResource
      OK := UpdateResource(ResHandle, PChar(ResType), PChar(ResName), 0,
                           MemRes.Memory, MemRes.Size);
      // On supprime le flux mémoire si on l'a créé
      if MustFreeRes then MemRes.Free;
      // Si UpdateResource a renvoyé False, il y a eu une erreur
      if not OK then raise EUpdateResError.Create;
    end;
     
    {*
      Supprime une ressource
      @param ResHandle   Handle de ressources obtenu par BeginUpdateRes
      @param ResName     Nom de la ressource à supprimer
    *}
    procedure DelResource(ResHandle : integer; const ResName : string);
    begin
      // Appel de Windows.UpdateResource
      if not UpdateResource(ResHandle, '', PChar(ResName), 0, nil, 0) then
      // Si UpdateResource a renvoyé False, il y a eu une erreur
        raise EUpdateResError.Create;
    end;
     
    {*
      Termine la mise à jour des ressources d'un fichier module
      @param ResHandle   Handle de ressources obtenu par BeginUpdateRes
      @param Cancel      Indique s'il faut annuler les modifications faites
    *}
    procedure EndUpdateRes(ResHandle : integer; Cancel : boolean = False);
    begin
      // Appel de Windows.EndUpdateResource
      if not EndUpdateResource(ResHandle, Cancel) then
      // Si EndUpdateResource a renvoyé False, il y a eu une erreur
        raise EUpdateResError.Create;
    end;
     
    {*
      Ajoute une ressources à un fichier module
      @param FileName   Nom du fichier module
      @param ResName    Nom de la ressource à ajouter
      @param Resource   Flux contenant la ressource
      @param ResType    Type de ressource
    *}
    procedure AddResToFile(const FileName, ResName : string; Resource : TStream;
      const ResType : string = 'RCDATA');
    var ResHandle : integer;
    begin
      ResHandle := BeginUpdateRes(FileName);
      try
        AddResource(ResHandle, ResName, Resource, ResType);
        EndUpdateRes(ResHandle);
      except
        try EndUpdateRes(ResHandle, True) except end;
        raise;
      end;
    end;
     
    {*
      Supprime une ressources d'un fichier module
      @param FileName   Nom du fichier module
      @param ResName    Nom de la ressource à supprimer
    *}
    procedure DelResInFile(const FileName, ResName : string);
    var ResHandle : integer;
    begin
      ResHandle := BeginUpdateRes(FileName);
      try
        DelResource(ResHandle, ResName);
        EndUpdateRes(ResHandle);
      except
        try EndUpdateRes(ResHandle, True) except end;
        raise;
      end;
    end;
     
    {$ENDIF}
     
    {$ENDREGION}
    sjrd, ancien rédacteur/modérateur Delphi.
    Auteur de Scala.js, le compilateur de Scala vers JavaScript, et directeur technique du Scala Center à l'EPFL.
    Découvrez Mes tutoriels.

  12. #12
    Membre confirmé Avatar de poly128
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    102
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 102
    Par défaut
    Pour AddResToFile, le parametre ResType qu'est que je doit mettre dedans. Est que c'est exemple 'bmp' 'jpg' 'ico' ou allors c'est completement autre chose. Et pour Resource qu'est que je met dedans et comment;

  13. #13
    Expert confirmé

    Avatar de sjrd
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2004
    Messages
    4 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Suisse

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2004
    Messages : 4 517
    Par défaut
    Si ta ressource est une icône, tu peux metre ICON, et si c'est un bitmap, mets BITMAP (pour ResType). Dans les autres cas, mets RCDATA (donc le paramètre par défaut).

    Le paramètre Resource est un TStream quelconque qui contient la ressource elle-même. Ce peut être issu d'un TBitmap.SaveToStream ou ce peut être un TFileStream (ouvert en lecture), ou encore un TMemoryStream conçu de toutes pièces. Bref n'importe quel flux.
    sjrd, ancien rédacteur/modérateur Delphi.
    Auteur de Scala.js, le compilateur de Scala vers JavaScript, et directeur technique du Scala Center à l'EPFL.
    Découvrez Mes tutoriels.

  14. #14
    Membre confirmé Avatar de poly128
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    102
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 102
    Par défaut
    Pourquoi ca marche pas .

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    procedure TForm1.Button1Click(Sender: TObject);
    var
    i:tstream;
    begin
      image1.Picture.Bitmap.SaveToStream(i);
      AddResToFile('C:\project1.exe', 'image', i, 'BITMAP');
    end;
    Il me sort l'erreur violation d'acces .

  15. #15
    Membre émérite
    Profil pro
    Inscrit en
    Février 2006
    Messages
    624
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 624
    Par défaut
    Bonsoir Poly128,

    L'access violation est dû au fait que le pointeur sous-jacent n'est pas instancié!

    Essayes ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    procedure TForm1.Button1Click(Sender: TObject);
    var
    i:tstream;
    begin
      i := TMemoryStream.Create;
      image1.Picture.Bitmap.SaveToStream(i);
      AddResToFile('C:\project1.exe', 'image', i, 'BITMAP');
    end;
    puis n'oublies pas
    @+

  16. #16
    Membre chevronné
    Profil pro
    Inscrit en
    Février 2003
    Messages
    560
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 560
    Par défaut
    Bonjour,

    Je dis peut être une bétise, mais pourquoi dans l'éxécutable et non dans un fichier spécialisé fournis avec l'éxécutable ?

    Je pensait à une "biblihotéque" sous forme d'un fichier de type Zip.


    "Désolé j'ai envoyé le message avant d'avoir finit de le rentrer complétememnt. faute de frappe.


    Je disait que si vous pouvez entrez les images dans un fichiers zip, vous pourriez y accéder directement comme à une ressource, et cagner beaucoup de place disque.

    L'inconvénient risque d'être le temps d'accés si il y a beaucoup d'images.

    Vous pouvez aussi bloquer le fichier zip avec un mot de passe, ou le laisser libre d'acces a qui veut le modifier. Cela n'arrétera certe pas quelqun de vraiment décidé à pirater les images, mais c'est mieux que rien.

  17. #17
    Membre confirmé Avatar de poly128
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    102
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 102
    Par défaut
    Si je mets un fichier zip ou un dossier contenent toutes mes images, l'utilisateur devra toujours faire suivre le dossier. Il y a des gens qui ne prononce meme pas windows correctement allors imaginer le reste .

    Bon j'y arrive presque. L'exe qui écrit dans C:\project1.exe a l'air de fonctionner puisque le fichier cible grossit. Mais l'orseque C:\project1.exe veut lire les ressources qu'il contient, il dit qu'il ne trouve pas bit1.

    Programme qui écrit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    procedure TForm1.Button1Click(Sender: TObject);
    var
    i:tstream;
    i2:integer;
    begin
      I:=tmemorystream.Create;
      image1.Picture.Bitmap.SaveToStream(i);
      AddResToFile('C:\project1.exe', 'bit1', i, 'BITMAP');
      i.Free;
    end;

    Programme qui lit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    procedure TForm1.Button1Click(Sender: TObject);
    var
    res:TResourceStream;
    bit: tbitmap;
    begin
     bit := tbitmap.Create;
     Res := TResourceStream.Create(hinstance, 'bit1', 'BITMAP');
     bit.LoadFromStream(Res);
     Image1.Picture.Bitmap.Assign(bit);
     Res.Free;
     bit.Free;
    End;
    En esperant que ce soit la dernière question que je vous pose sur ce sujet .

  18. #18
    Expert confirmé

    Avatar de sjrd
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2004
    Messages
    4 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Suisse

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2004
    Messages : 4 517
    Par défaut
    A la place de HInstance en paramètre, essaye dans l'ordre :
    1. 0
    2. GetModuleHandle(nil)
    3. GetModuleHandle('NomDeLExe.exe');
    S'il s'agit d'une DLL, il faudra toujours mettre le (3)
    sjrd, ancien rédacteur/modérateur Delphi.
    Auteur de Scala.js, le compilateur de Scala vers JavaScript, et directeur technique du Scala Center à l'EPFL.
    Découvrez Mes tutoriels.

  19. #19
    Membre confirmé Avatar de poly128
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    102
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 102
    Par défaut
    Non, ça marche pas . C'est toujours la même erreur.

  20. #20
    Expert confirmé

    Avatar de sjrd
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2004
    Messages
    4 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Suisse

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2004
    Messages : 4 517
    Par défaut
    As-tu d'abord essayé de voir avec Resource Hacker si la ressource était bien dans le prog... Histoire de savoir de quel côté ça plante
    sjrd, ancien rédacteur/modérateur Delphi.
    Auteur de Scala.js, le compilateur de Scala vers JavaScript, et directeur technique du Scala Center à l'EPFL.
    Découvrez Mes tutoriels.

Discussions similaires

  1. Réponses: 3
    Dernier message: 16/09/2012, 19h25
  2. Réponses: 5
    Dernier message: 05/03/2008, 15h23
  3. Ajouter Fichiers Ressources en exécution
    Par bandit boy dans le forum C++Builder
    Réponses: 5
    Dernier message: 02/06/2006, 09h00
  4. Réponses: 2
    Dernier message: 29/01/2004, 11h05
  5. Fichier ressource contenant une icône
    Par k_boy dans le forum x86 32-bits / 64-bits
    Réponses: 9
    Dernier message: 26/09/2002, 20h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo