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

Lazarus Pascal Discussion :

Problème avec Windows dans les uses et FindClose [Lazarus]


Sujet :

Lazarus Pascal

  1. #1
    Membre actif
    Avatar de sematimo
    Profil pro
    Inscrit en
    Février 2009
    Messages
    287
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 287
    Points : 276
    Points
    276
    Par défaut Problème avec Windows dans les uses et FindClose
    Bonjour à tous
    J'ai un bouton qui permet de lister les fichiers d'un répertoire.
    j'ai un second bouton qui listes les disques durs.

    sans windows dans les uses, message d'erreur (unit1.pas(57,7) Error: Identifier not found "GetDriveType").
    avec windows dans les uses, message d'erreur (func.inc(185,10) Hint: Found declaration: FindClose(QWord):LongBool;)

    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
    procedure TForm1.Button1Click(Sender: TObject);
    var
    searchResult : TSearchRec;
    path : string;
    begin
    path := 'd:\';
    if FindFirst(path + '*', faDirectory, searchResult) = 0 then
    begin
    repeat
    listbox1.items.Add(searchResult.Name);
    until FindNext(searchResult) <> 0;
    FindClose(searchResult);
    end;
    end;
     
    procedure TForm1.Button2Click(Sender: TObject);
    var
    i:char;
    begin
     for i:='A' to 'Z' do
       begin
       if GetDriveType(PChar(i+':\'))<>1 then
         listbox1.items.Add(i+':\');
        end;
    end;

  2. #2
    Membre éclairé
    Avatar de Chrispi
    Homme Profil pro
    Chargé de missions
    Inscrit en
    Juin 2020
    Messages
    204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : Chargé de missions
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2020
    Messages : 204
    Points : 885
    Points
    885
    Par défaut
    Bonjour sematiomo,

    Je viens d'essayer. Garde dans les uses Windows et au niveau du bouton 1 efface la ligne de code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FindClose(searchResult);
    Et ça va fonctionner.

    Mais il faut peut-être songer à arrêter "repeat until"...

  3. #3
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 852
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 852
    Points : 11 285
    Points
    11 285
    Billets dans le blog
    6
    Par défaut
    Bonjour,
    L'ordre des unités a peut-être à voir, SysUtils et Windows définissant sûrement un FindClose avec des signatures différentes.
    Tu devrais essayer de modifier l'ordre des uses ou de préfixer par le nom d'unité.
    Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

  4. #4
    Membre éclairé
    Avatar de Chrispi
    Homme Profil pro
    Chargé de missions
    Inscrit en
    Juin 2020
    Messages
    204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : Chargé de missions
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2020
    Messages : 204
    Points : 885
    Points
    885
    Par défaut
    Re Bonjour,

    J'ai trouvé. Il faut mettre FindClose comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SysUtils.FindClose(searchResult);
    Et là ça fonctionne bien.

  5. #5
    Membre actif
    Avatar de sematimo
    Profil pro
    Inscrit en
    Février 2009
    Messages
    287
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 287
    Points : 276
    Points
    276
    Par défaut
    Avec SysUtils.FindClose(searchResult), pas de problème.
    Merci à vous.

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

Discussions similaires

  1. Problème avec closeCursor() dans les boucles
    Par Gordibach dans le forum Langage
    Réponses: 1
    Dernier message: 08/09/2011, 23h05
  2. [AC-2007] Problème avec AnimateWindow dans l'API Windows
    Par JeanMickey dans le forum IHM
    Réponses: 0
    Dernier message: 14/08/2011, 14h22
  3. Réponses: 12
    Dernier message: 24/09/2010, 00h08
  4. problème avec "formatString" dans les balises xml
    Par k750_b dans le forum Alimentation
    Réponses: 0
    Dernier message: 17/06/2008, 11h04
  5. Problème d'espaces dans les chemins avec Cygwin
    Par destructive dans le forum Applications et environnements graphiques
    Réponses: 1
    Dernier message: 14/04/2008, 17h48

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