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

Langage Delphi Discussion :

FindFirst et 2000, xp et 2003 (Delphi 5)


Sujet :

Langage Delphi

  1. #1
    Membre éprouvé

    Profil pro
    Inscrit en
    Mai 2003
    Messages
    582
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2003
    Messages : 582
    Points : 915
    Points
    915
    Par défaut FindFirst et 2000, xp et 2003 (Delphi 5)
    je comprend pas tellement pourquoi FindFirst et FindNext avec des
    arguments comme 'c:\*.*' arrête de fonctionner si j'enlève la coche suivante:


    Quelqu'un peut m'expliquer?

    On peut tester facilement avec le code du help:

    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
     
    procedure TForm1.Button1Click(Sender: TObject);
     
    var
      sr: TSearchRec;
      FileAttrs: Integer;
    begin
      StringGrid1.RowCount := 1;
      if CheckBox1.Checked then
        FileAttrs := faReadOnly
      else
        FileAttrs := 0;
      if CheckBox2.Checked then
        FileAttrs := FileAttrs + faHidden;
      if CheckBox3.Checked then
        FileAttrs := FileAttrs + faSysFile;
      if CheckBox4.Checked then
        FileAttrs := FileAttrs + faVolumeID;
      if CheckBox5.Checked then
     
        FileAttrs := FileAttrs + faDirectory;
      if CheckBox6.Checked then
        FileAttrs := FileAttrs + faArchive;
      if CheckBox7.Checked then
     
        FileAttrs := FileAttrs + faAnyFile;
     
      if FindFirst(Edit1.Text, FileAttrs, sr) = 0 then
     
      begin
        with StringGrid1 do
        begin
          if (sr.Attr and FileAttrs) = sr.Attr then
          begin
            Cells[1,RowCount-1] := sr.Name;
            Cells[2,RowCount-1] := IntToStr(sr.Size);
          end;
          while FindNext(sr) = 0 do
          begin
            if (sr.Attr and FileAttrs) = sr.Attr then
            begin
            RowCount := RowCount + 1;
            Cells[1, RowCount-1] := sr.Name;
     
            Cells[2, RowCount-1] := IntToStr(sr.Size);
            end;
          end;
          FindClose(sr);
        end;
      end;
    end;
    Si il existe une alternative à FindFirst FindNext et qui fonctionnerais
    même si cette case est décoché ca m'arrangerais beaucoup....

    Merci
    Comment dupliquer un disque...ça vous intéresse?
    Tutoriel et code source delphi ici

  2. #2
    Membre éprouvé

    Profil pro
    Inscrit en
    Mai 2003
    Messages
    582
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2003
    Messages : 582
    Points : 915
    Points
    915
    Par défaut
    Est-ce que quelqu'un peut tester avec une autre version Delphi?

    Merci
    Comment dupliquer un disque...ça vous intéresse?
    Tutoriel et code source delphi ici

  3. #3
    Membre éprouvé

    Profil pro
    Inscrit en
    Mai 2003
    Messages
    582
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2003
    Messages : 582
    Points : 915
    Points
    915
    Par défaut
    J'ai finalement trouvé....

    dans le module SysUtils les constantes suivante sont défini:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    { File attribute constants }
     
      faReadOnly  = $00000001;
      faHidden    = $00000002;
      faSysFile   = $00000004;
      faVolumeID  = $00000008;
      faDirectory = $00000010;
      faArchive   = $00000020;
      faAnyFile   = $0000003F;
    Il manque cependant ceux là qui exixte en NTFS:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    const
        faENCRYPTED           = $00004000;
        faNOT_CONTENT_INDEXED = $00002000;
        faOFFLINE             = $00001000;
        faCOMPRESSED          = $00000800;
        faREPARSE_POINT       = $00000400;
        faSPARSE_FILE         = $00000200;
        faTEMPORARY           = $00000100;
        faNORMAL              = $00000080;
        faDEVICE              = $00000040;
    lorsque la coche est enlevé, les fichiers obtennent l'attribut
    suivant: faNOT_CONTENT_INDEXED
    ce qui fait échouer la codition suivante dans l'exemple du help:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if (sr.Attr and FileAttrs) = sr.Attr then
    la facon de s'en sortir, c'est d'ajouter cette ligne avant le FindFirst
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    FileAttrs:= FileAttrs+faNOT_CONTENT_INDEXED;
    ou de remplacer les conditions par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if (sr.Attr and FileAttrs) = ( sr.Attr and $0FF) then
    Au cas ou ca peut aider quelqu'un....
    Comment dupliquer un disque...ça vous intéresse?
    Tutoriel et code source delphi ici

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

Discussions similaires

  1. migration windows 2000 server vers 2003 server
    Par yann_p dans le forum Windows Serveur
    Réponses: 1
    Dernier message: 13/02/2007, 14h00
  2. Ouverture BDD Access 2000 sous Access 2003
    Par Expensive dans le forum Access
    Réponses: 5
    Dernier message: 10/02/2007, 11h00
  3. Access 2000 et runtime 2003
    Par Invité dans le forum Runtime
    Réponses: 2
    Dernier message: 05/01/2007, 09h42
  4. Sql Server 2000 et Windwows 2003
    Par kafui dans le forum MS SQL Server
    Réponses: 8
    Dernier message: 19/05/2006, 08h23
  5. migration de access 2000 vers access 2003
    Par progima dans le forum Access
    Réponses: 3
    Dernier message: 30/11/2005, 10h38

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