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 :

Ajouter d'autres formats à une commande. D6 Win11 64bits


Sujet :

Delphi

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

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 550
    Par défaut Ajouter d'autres formats à une commande. D6 Win11 64bits
    Bonjour à toutes et à tous,

    J'ai un seul format qui me permet de faire un traitement et j'aurai aimé que le format .png soit aussi utilisé.

    J'ai essayé de faire comme avec le TSaveDialog en ajoutant un pont virgule et puis *.png mais cela ne fonctionne pas.

    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
     
    procedure TU_Convertjpg.btn_SearchClick(Sender: TObject);
    begin
     
      ListBox1.Clear;
     
      FindFiles(edt_Dir.Text, edt_Mask.Text {'*.jpg'}, ListBox1.items, ckb_SubDirs.Checked);
      //Lm.text := inttostr(listbox1.items.Count);
      lm.text := FormatCurr('000', listbox1.items.Count);
      Bdelete.Enabled := true;
      Effacertoutelaliste1.Enabled := true ;
      Effacerunparun.Enabled := true;
     
      Btn_convert.Enabled := true;
     
      ListBox1.Selected[0]:= true;
     
      ListBox1Click(Sender);
    end;
    Merci d'avance,

    @+,

    cincap

  2. #2
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 041
    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 041
    Par défaut
    Il nous faudrait le code du FindFiles
    Si basé sur FindFirstFile via FindFirst

    Mais c'est un filtre, il faut probablement l'invoqué plusieurs fois avec des filtres différents ou alors utiliser '*.*' et faire le filtre en Delphi

    Si je repars de la fonction GetListFile de ce sujet avec un MatchText de StrUtils
    Je ne sais pas si en D6 la fonction MatchesMask existe qui permet de gérer le *
    Je ne l'ai pas testé mais cela donne une idée de départ


    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
     
      procedure GetListFile(const PathFile: string; ResultList: TStrings; const Filters: array of string; Recurse: Boolean = False);
      var
        SearchRec: TSearchRec;
      begin
        ResultList.BeginUpdate();
        try
          if not Recurse then
            ResultList.Clear();
     
          // '*' ou '*.*' Renvoie '.' et '..'
          if SysUtils.FindFirst(PathFile + '*', faAnyFile, SearchRec) = 0 then
          begin
            try
              repeat
                if (SearchRec.Name <> '.') and (SearchRec.Name <> '..') then
                begin
                  if Recurse then
                  begin
                    if (SearchRec.Attr and faDirectory) <> 0 then // Dossier
                      GetListFile(IncludeTrailingPathDelimiter(PathFile + SearchRec.Name), ResultList, Filters, True) // C'est un Dossier, on cherche les fichiers qu'il contient !
                    else if StrUtils.MatchStr(ExtractFileExt(SearchRec.Name), Filters) then
                      ResultList.Add(PathFile + SearchRec.Name) // Fournie Racine + Nom du Fichier
                  end
                  else
                    if (SearchRec.Attr and faDirectory) = 0 then // Fichier
                      if StrUtils.MatchText(ExtractFileExt(SearchRec.Name), Filters) then
                        ResultList.Add(SearchRec.Name); // Fourni juste le nom du Fichier
                end;
     
              until SysUtils.FindNext(SearchRec) <> 0;
            finally
              SysUtils.FindClose(SearchRec);
            end;
          end;
        finally
          ResultList.EndUpdate();
        end;
      end;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    GetListFile(IncludeTrailingPathDelimiter(edt_Dir.Text), ListBox1.items, ['.JPG', '.PNG'], ckb_SubDirs.Checked);
    A toi de trouver comment proposer la saisie des filtres, j'ai utilisé un array of string mais un Strings pourrait aussi faire l'affaire, un Memo pour la liste des extensions ou un ExtractStrings sur un TEdit
    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 expérimenté
    Homme Profil pro
    ‫‬
    Inscrit en
    Septembre 2024
    Messages
    158
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : ‫‬

    Informations forums :
    Inscription : Septembre 2024
    Messages : 158
    Par défaut
    Version modifiée utilise le point virgule comme séparateur entre les extentions .png;.jpg;.jpeg:

    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
    procedure GetListFile(const aDir: string; ResultList: TStrings; const Filters: string; Recurse: Boolean = False);
    var
      SearchRec: TSearchRec;
      D, Filter, Ext: string;
      Tree: TStrings;
      Curr: integer;
    begin
      Filter := ';'+UpperCase(Filters)+';';
      Tree := TStringList.Create;
      ResultList.BeginUpdate();
      try
        ResultList.Clear;
        Curr := Tree.Add(IncludeTrailingPathDelimiter(aDir));
        while Curr < Tree.Count do
        begin
          D := Tree[Curr];
          // '*' ou '*.*' Renvoie '.' et '..'
          if FindFirst(D + '*',faAnyFile, SearchRec) = 0 then
          begin
                repeat
                    if  ((SearchRec.Attr and faDirectory) = faDirectory) then
                    begin
                       if Recurse and (SearchRec.Name <> '.') and (SearchRec.Name <> '..') then
                          Tree.Add(D + SearchRec.Name + '\');
                    end else
                    begin
                       Ext := Uppercase(ExtractFileext(SearchRec.Name));
                       if Pos(';'+Ext+';', Filter) > 0 then
                           ResultList.Add(D + SearchRec.Name);
                    end;
                until FindNext(SearchRec) <> 0;
                FindClose(SearchRec);
          end;
          Inc(Curr);
        end;
      finally
        Tree.Free;
        ResultList.EndUpdate();
      end;
    end;
    Exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    GetListFile( 'C:\Users\pc\Desktop\compos',Memo1.Lines, '.png;.jpg');

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 550
    Détails du profil
    Informations personnelles :
    Âge : 72
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 550
    Par défaut
    Bonjour à toutes et à tous, désolé pour le retard !

    @ ShaiLeTroll, grand merci pour ta suggestion, cela m'a permis de vérifier l'extension que j'avais mise dans le composant "Edt_Mak.text", je l'ai modifiée et j'ai rajouté l'unité "GraphicEx".

    Tout est ok pour créer depuis des photos un fichier Acrobat.

    Merci aussi à rMist2024 pour sa solution.

    @+,

    cincap

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Ajouter des guillemets dans une commande sed
    Par NoobTalan dans le forum Shell et commandes GNU
    Réponses: 11
    Dernier message: 30/07/2019, 19h46
  2. Ajouts d'autres execution une fois l'empaquetage terminé?
    Par axellaperle dans le forum Access
    Réponses: 1
    Dernier message: 10/12/2013, 19h32
  3. [SHELL] ajouter des paramètres pour une commande shell
    Par anissben dans le forum Shell et commandes GNU
    Réponses: 5
    Dernier message: 11/12/2010, 13h36
  4. Ajouter un champ dans une autre base Access
    Par scaalp dans le forum Access
    Réponses: 2
    Dernier message: 20/10/2005, 15h34
  5. Sauvegarde d'une image sous un autre format
    Par gandf dans le forum C++Builder
    Réponses: 4
    Dernier message: 24/02/2004, 09h50

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