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 :

Cr�er un fichier Res et utilisation pour une liste de photos D6 et Win11 64bits


Sujet :

Delphi

  1. #1
    Membre �prouv�
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 629
    D�tails du profil
    Informations personnelles :
    �ge : 72
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 629
    Par d�faut Cr�er un fichier Res et utilisation pour une liste de photos D6 et Win11 64bits
    Bonjour � toutes et � tous,

    Dans une ancienne application, je charge des photos dans un Timage depuis le m�me dossier de l'application.

    Ma question si on cr�e un fichier ressource, il faudra faire l'extraction 7 fois si il y a 7 photos ?

    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
     
    //Chargement :
     
    ImageFiles := TStringList.Create;
    ImageFiles.Add('Chat.jpg');
    ImageFiles.Add('Chat_1.jpg');
    ImageFiles.Add('Chat_2.jpg');
    ImageFiles.Add('Chat_3.jpg');
    ImageFiles.Add('Chat_4.jpg');
    ImageFiles.Add('Chat_5.jpg');
    ImageFiles.Add('Chat_6.jpg');
     
      ImageIndex := 0;
     
      image1.Picture.LoadFromfile(ImageFiles[ImageIndex]);
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    //Mon RC :
     
    Photo RCDATA "Chat.jpg"
    Photo1 RCDATA "Chat_1.jpg"
    Photo2 RCDATA "Chat_2.jpg"
    Photo3 RCDATA "Chat_3.jpg"
    Photo4 RCDATA "Chat_4.jpg"
    Photo5 RCDATA "Chat_5.jpg"
    Photo6 RCDATA "Chat_6.jpg"
    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
     
    //Lecture
     
    procedure TU_Form.BLectureClick(Sender: TObject);
    var
      RS: TResourceStream;
      JPGImage: TJPEGImage;
    begin
      JPGImage := TJPEGImage.Create;
      try
        RS := TResourceStream.Create(hInstance, 'Photo', RT_RCDATA);
        try
          JPGImage.LoadFromStream(RS);
          Image1.Picture.Graphic := JPGImage;
        finally
          RS.Free;
        end;
      finally
        JPGImage.Free;
      end;
    end;
    J'avais pens� a un fichier Zip en ressource puis l'extraire mais avec D6 je ne penses pas que c'est faisable.

    Si quelqu'un a une id�e merci d'avance.

    @+,

    cincap

  2. #2
    Expert �minent
    Avatar de ShaiLeTroll
    Homme Profil pro
    D�veloppeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 114
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 44
    Localisation : France, Seine Saint Denis (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur C++\Delphi
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 114
    Par d�faut
    Au final, il te faudra un stream s�par� par Audio, extraire 7 ressources, c'est pas grand chose, les DFM sont des ressources, est-ce que tu te poses la question de combien de fen�tre tu stockes et extraits ?

    Pour le zip voir Abrevia mais faut trouver une version de l'�poque

    Si tu utilises souvent les audio, tu peux les conserver en m�moire ou dans un dossier temporaire.
    Aide via F1 - FAQ - Guide du d�veloppeur Delphi devant un probl�me - Pensez-y !
    Attention Troll M�chant !
    "Quand un homme a faim, mieux vaut lui apprendre � p�cher que de lui donner un poisson" Confucius
    Mieux vaut se taire et para�tre idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la m�diocrit� !

    L'exp�rience, c'est le nom que chacun donne � ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #3
    Membre �prouv�
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 629
    D�tails du profil
    Informations personnelles :
    �ge : 72
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 629
    Par d�faut
    @ ShaiLeTroll, merci pour ton message, avant tout, j'ai du modifier mon fichier RC :

    PHOTO JPG "Chat.jpg"
    PHOTO1 JPG "Chat_1.jpg"
    PHOTO2 JPG "Chat_2.jpg"
    PHOTO3 JPG "Chat_3.jpg"
    PHOTO4 JPG "Chat_4.jpg"
    PHOTO5 JPG "Chat_5.jpg"
    PHOTO6 JPG "Chat_6.jpg"
    et ensuite je sauve les photos dans le dossier de l'application afin de les utiliser avec mon TStringList et puis � la fermeture de l'application je les deletes.:

    OnCreate :

    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
     
     ResPhotos := TResourceStream.Create(Hinstance, 'PHOTO', 'JPG');
     try
     ResPhotos.SavetoFile(dirdir + 'Chat.jpg');
     finally
     ResPhotos.Free;
     
     end;
     
     ResPhotos1 := TResourceStream.Create(Hinstance, 'PHOTO1', 'JPG');
     try
     ResPhotos1.SavetoFile(dirdir + 'Chat_1.jpg');
     finally
     ResPhotos1.Free;
     
     end;
     
     ResPhotos2 := TResourceStream.Create(Hinstance, 'PHOTO2', 'JPG');
     try
     ResPhotos.SavetoFile(dirdir + 'Chat_2.jpg');
     finally
     ResPhotos2.Free;
     
     end;
    .....
    ......
     
     ResPhotos6 := TResourceStream.Create(Hinstance, 'PHOTO6', 'JPG');
     try
     ResPhotos.SavetoFile(dirdir + 'Chat_6.jpg');
     finally
     ResPhotos6.Free;
     
     end;
    Je pense qu'il y a moyen de le simplifier ?

    Je teste encore,

    @+,

    cincap

  4. #4
    Expert �minent
    Avatar de ShaiLeTroll
    Homme Profil pro
    D�veloppeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 114
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 44
    Localisation : France, Seine Saint Denis (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur C++\Delphi
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 114
    Par d�faut
    un tableau et un for pour r�duire le code

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    array[0..6] of string = ('Chat.jpg', 'Chat_1.jpg', 'Chat_2.jpg', 'Chat_3.jpg', 'Chat_4.jpg', 'Chat_5.jpg', 'Chat_6.jpg');
    Et selon la fr�quence d'utilisation, si c'est affich� souvent, autant mettre en cache, avoir un array[0..6] of TPicture / TObjectList (ce dernier plus facile � lib�rer)
    A voir le plus performant entre TJPEGImage, TPicture ou TBitmap


    Sinon pourquoi ne pas plut�t utilis� une TImageList ?
    Si toutes les images ont la m�me taille, tu peux mettre toutes les images d'un coup dans un TImageList, lui m�me sera une ressource au sein du DFM
    Aide via F1 - FAQ - Guide du d�veloppeur Delphi devant un probl�me - Pensez-y !
    Attention Troll M�chant !
    "Quand un homme a faim, mieux vaut lui apprendre � p�cher que de lui donner un poisson" Confucius
    Mieux vaut se taire et para�tre idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la m�diocrit� !

    L'exp�rience, c'est le nom que chacun donne � ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  5. #5
    Membre exp�riment�
    Avatar de XeGregory
    Homme Profil pro
    Passionn� par la programmation
    Inscrit en
    Janvier 2017
    Messages
    528
    D�tails du profil
    Informations personnelles :
    Sexe :