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 :

Recherche extension fichiers


Sujet :

Delphi

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Janvier 2009
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2009
    Messages : 17
    Points : 13
    Points
    13
    Par défaut Recherche extension fichiers
    Bonjour,

    J'aimerais faire une recherche sur l'extension des fichiers.

    J'ai un formulaire avec des checkbox, lorsque que je coche un case cela fonctionne. La où ça se corse c'est a partir de 2.

    Il me met dans ma variable que la dernier case que j'ai coché.

    Voici ce que j'ai fait:

    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
    if ChBxLog.Checked then extension := '\*.log';
    if ChBxTMP.Checked then extension := '\*.tmp';
    if ChBxBAK.Checked then extension := '\*.bak';
     
    if EdtScan.Text = ' '
         then MessageDlg('Aucun type de fichier na été sélectionné',mtError,[mbOK],0)
         else
           begin
        fileattrs := $0000003F;
        with FResultatInventaire.StringGridResultatInventaire do
          begin
            ShowMessage(extension);
            RowCount := 0;
            if FindFirst(FInventaire.EdtScan.Text + extension, FileAttrs, sr) = 0  then
               repeat
                 if (sr.Attr and FileAttrs) = sr.Attr then
                 begin
                   RowCount := RowCount + 1;
                   Cells[0,RowCount-1] := sr.Name;
                   Cells[1,RowCount-1] := IntToStr(sr.Size);
                   dt := FileDateToDateTime(sr.time);
                   Cells[2,RowCount-1] := datetimetostr(dt);
                 end;
               until FindNext(sr) <> 0;
            FindClose(sr);
          end;
    end;
    De plus dans mon code, je n'ai pas encore pas mis la récursivité. Il ne recherche que dans le répertoire courant. Il y a bien une FAQ sur ce sujet, lais je n'ai pas bien compris Si une âme charitable pouvais m'expliquer ce sera super.

    Merci pour votre aide

  2. #2
    Membre expérimenté
    Avatar de ouiouioui
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Août 2006
    Messages
    984
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2006
    Messages : 984
    Points : 1 418
    Points
    1 418
    Par défaut
    Citation Envoyé par The Ditch Voir le message
    [CODE]if ChBxLog.Checked then extension := '\*.log';
    if ChBxTMP.Checked then extension := '\*.tmp';
    if ChBxBAK.Checked then extension := '\*.bak';
    Normal, a chaque test tu écrase la valeur précédente.
    Moi je créerai un array et ajouterai dedans si checked, et en bas je boucle findfirst findclose pour tester les valeur de l'array
    Il existe 3 sortes de gens: ceux qui savent compter et ceux qui ne savent pas.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Janvier 2009
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2009
    Messages : 17
    Points : 13
    Points
    13
    Par défaut
    Bonjour merci pour ton aide.

    Je dois encore avoir un soucis dans mon code:

    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 TFInventaire.BtnAnalyseClick(Sender: TObject);
    var sr                 : TSearchRec ;
        fileattrs,i,j      : integer ;
        dt                 : tdatetime;
        extension          : string;
        TabExtensionFiles  : array [1..3] of string [7];
     
    begin
     
       if ChBxLog.Checked then TabExtensionFiles[1]:= ('\*.log');
       if ChBxTMP.Checked then TabExtensionFiles[2]:= ('\*.tmp');
       if ChBxBAK.Checked then TabExtensionFiles[3]:= ('\*.bak');
     
    if EdtScan.Text = ' '
         then MessageDlg('Aucun type de fichier na été sélectionner',mtError,[mbOK],0)
         else
           begin
              fileattrs := $0000003F;
              j := 1;
              with FResultatInventaire.StringGridResultatInventaire do
                begin
                  while j < 22 do
                       begin
                          RowCount := 0;
                          if FindFirst(FInventaire.EdtScan.Text + TabExtensionFiles[i], FileAttrs, sr) = 0  then
                             repeat
                               if (sr.Attr and FileAttrs) = sr.Attr then
                               begin
                                 RowCount := RowCount + 1;
                                 Cells[0,RowCount-1] := sr.Name;
                                 Cells[1,RowCount-1] := IntToStr(sr.Size);
                                 dt := FileDateToDateTime(sr.time);
                                 Cells[2,RowCount-1] := datetimetostr(dt);
                               end;
                             until FindNext(sr) <> 0;
                          FindClose(sr);
                          j := j+1;
                       end;
                end;
    end;
    Si vous pouviez m'aiguiller; ce sera sympa. Je n'ai pas encore acquis la logique ...

  4. #4
    Membre expérimenté
    Avatar de ouiouioui
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Août 2006
    Messages
    984
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2006
    Messages : 984
    Points : 1 418
    Points
    1 418
    Par défaut
    un array dynamique, ou un tstringlist comme dans l'exemple


    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
    Var
      sr:                TSearchRec;
      fileattrs, i, j:   integer;
      dt:                tdatetime;
      extension:         String;
      TabExtensionFiles: Array Of String[4];
     
      Procedure SetArray(bChecked: boolean; sExt: String);
      Var
        iSize: integer;
      Begin
        If bChecked Then
        Begin
          iSize := Length(TabExtensionFiles) + 1;
          SetLength(TabExtensionFiles, iSize);
          TabExtensionFiles[iSize - 1] := AnsiLowerCase(sExt);
        End;
      End;
     
      Function ArrayIndexOF(sText: String): integer;
      Var
        iPos: integer;
      Begin
        sText    := AnsiLowerCase(ExtractFileExt(sText));
        Result   := -1;
        For iPos := Low(TabExtensionFiles) To High(TabExtensionFiles) Do
        Begin
          If sText = TabExtensionFiles[iPos] Then
          Begin
            Result := iPos;
            Break;
          End;
        End;
      End;
     
    Begin
      SetLength(TabExtensionFiles, 0);
      SetArray(ChBxLog.Checked, '.log');
      SetArray(ChBxTMP.Checked, '.tmp');
      SetArray(ChBxBAK.Checked, '.bak');
     
      If EdtScan.Text = ' ' Then
        MessageDlg('Aucun type de fichier na été sélectionner', mtError, [mbOK], 0)
      Else
      Begin
        fileattrs := $0000003F;
        j         := 1;
        With FResultatInventaire.StringGridResultatInventaire Do
        Begin
          RowCount := 0;
          If FindFirst(FInventaire.EdtScan.Text + '\*', fileattrs, sr) = 0 Then
            Repeat
              If ((sr.Attr And fileattrs) = sr.Attr) And (ArrayIndexOF(sr.Name) <> -1) Then
              Begin
                RowCount               := RowCount + 1;
                Cells[0, RowCount - 1] := sr.Name;
                Cells[1, RowCount - 1] := IntToStr(sr.Size);
                dt                     := FileDateToDateTime(sr.time);
                Cells[2, RowCount - 1] := datetimetostr(dt);
              End;
            Until FindNext(sr) <> 0;
          FindClose(sr);
        End;
      End;
    Il existe 3 sortes de gens: ceux qui savent compter et ceux qui ne savent pas.

  5. #5
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Janvier 2009
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2009
    Messages : 17
    Points : 13
    Points
    13
    Par défaut
    Bonjour,



    @ouiouioui
    Merci , ça fonction , maintenant je dois bien comprendre ce que tu m'a donner

    @Caribensila

    Merci super le lien, il y a plein d'idée

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 03/11/2013, 15h17
  2. [XL-2010] Rechercher un fichier en connaissant son nom et son extension
    Par richert90 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 17/10/2013, 18h21
  3. Recherche de fichier sans extension
    Par sempire dans le forum Windows XP
    Réponses: 8
    Dernier message: 24/06/2009, 09h06
  4. [WinAPI] Infos extensions fichiers
    Par Pedro dans le forum API, COM et SDKs
    Réponses: 4
    Dernier message: 16/06/2004, 13h36
  5. Recherche support fichier
    Par sydiop dans le forum Informix
    Réponses: 5
    Dernier message: 18/03/2004, 10h15

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