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 :

Questions sur la navigation dans les répertoires


Sujet :

Langage Delphi

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2007
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 88
    Points : 11
    Points
    11
    Par défaut Questions sur la navigation dans les répertoires
    Bonjour à tous,

    J'ai une question concerant l'éxécution d'un projet en cours.

    En fait, il s'agit d'un outil capable de trouver puis de supprimer certaines fichiers/dossiers.

    Voici mes questions:

    -Comment faire, pour se déplacer dans les repertoires?(ex sous Dos cd %systemdrive%)

    - Comment utiliser la variable HomeDrive, ou SytemDrive?

    J'aurais bien sur une ou deux autres questions, mais je préfere m'en tenir là pour le moment.

    Merci pour les éventuelles réponses qui peuvent être apportées.

  2. #2
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 871
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 871
    Points : 15 287
    Points
    15 287
    Par défaut
    Yep !
    Citation Envoyé par belle5656 Voir le message
    -Comment faire, pour se déplacer dans les repertoires?(ex sous Dos cd %systemdrive%)
    ChDir

    Citation Envoyé par belle5656 Voir le message
    - Comment utiliser la variable HomeDrive, ou SytemDrive?
    Avec ce lien

    Mes 2 cts,
    --
    jp

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2007
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 88
    Points : 11
    Points
    11
    Par défaut
    Yep merci!

    Pour ChDir, j'avais bien vu, mais j'ai du mal m'exprimer, désolé..

    En fait, si je rentre en début de code

    Chdir(SystemDrive);

    Rien ne se passe...

    PAr contre, effectivement

    ChDir(C:\);

    Là c'est ok.

    Il faut donc, si j'ai bien saisi le truc, déclarer a quoi correspond SystemDrive c'est bien cela?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    var
     
    SystemDrive : ???;

  4. #4
    Rédacteur/Modérateur
    Avatar de ero-sennin
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    2 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 2 965
    Points : 4 935
    Points
    4 935
    Par défaut
    Salut,

    Tu peux faire ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    procedure TForm1.Button1Click(Sender: TObject);
    begin
    ShowMessage(GetEnvironmentVariable('HOMEDRIVE'));
    end;
    Dans mon cas, ca me retourne C:

    Sinon, tu peux jetter un oeil là dessus :

    http://delphi.developpez.com/faq/?pa...terapplication

    En espérant t'aider
    A+

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2007
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 88
    Points : 11
    Points
    11
    Par défaut
    salut!

    Ok merci pour ta réponse, je regarde cela, et te donne une réponse demain.

    Merci bonne nuit!

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2007
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 88
    Points : 11
    Points
    11
    Par défaut
    Salut à tous,

    Bon, je viens aux nouvelles, car cela ne fonctionne pas..Oui je dois mal m'y prendre.

    Voici ce que j'ai saisi:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    procedure TForm1.Button1Click(Sender: TObject);
    begin
    chdir(GetEnvironmentVariable('HOMEDRIVE'));
     
     if FileExists(***.***) then
      Memo1.Text:=******!';
        Writeln(Rapport, ***.***!');
    C'est faux non?

    J'avoue avoir un peu de mal a saisir là...
    J'ai pourtant des tutos, un ouvrage mais bon...

  7. #7
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Salut

    Assure-toi que l'anti-slash est présent (c:\):
    Essaye comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
      ChDir(IncludeTrailingPathDelimiter(GetEnvironmentVariable('HOMEDRIVE'))));
    @+ Claudius

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2007
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 88
    Points : 11
    Points
    11
    Par défaut


    Parfait.. tu es le

    Puis-je te poser d'autres questions auxquelles je ne trouve pas solution?
    Ca fait un peu assister, mais vu que je débute...

  9. #9
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Let's go !

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2007
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 88
    Points : 11
    Points
    11
    Par défaut
    Merci beaucoup!

    voilà, alors pour chercher les dossiers ou fichiers dont j'ai besoin, je me sers de:

    FileExists

    Cette dernière fonctionne parfaitement, je veux dire, dès qu'un fichier/dossier est trouvé, son nom s'inscrit dans le Memo1, et dans le rapport.

    Seulement, quand un des fichier/dossier n'est pas trouvé, son nom apparait quand même dans le .txt (par contre à l'écran non )

    Voici la synthaxe que j'utilise:


    if FileExists(fichier1) then
    Memo1.Text:=fichier1';
    Writeln(rapport, fichier1!')

    else
    begin
    if FileExists(fichier2) then
    Memo1.Text:=fichier1';
    Writeln(rapport, fichier2!')


    alors mes questions sont les suivantes:
    • Comment passer d'un fichier? avec Goto?
    • Comment rechercher aussi les fichiers dont j'ai besoin dans les repertoires, et sous-repertoires? Toujours en partant de la partiton systeme.
    • Et comment inscrire le nom du chemin complet du fichier trouvé dans le rapport .txt?



    Par ex (c'est l'habitude) sous DOS je me sers de:


    for /f "delims=" %%a in ('dir /s "%systemdrive%\" /b /ad') do (

    if exist "%%a\fichier1" echo %%a\fichier1>>%systemdrive%\rapport.txt
    )
    Ou Dir /s cherche dans les repertoires et sous-repertoires.

    Ou %%a est le nom de chemin dans lequel se trouve le fichier rechercher.

    Désolé pour la comparaison, mais c'est pour expliquer mon attente le plus clair possible.

  11. #11
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Fichier1, Fichier2...FichierN est une liste prédéfinie de fichiers ?
    Comment sont il stocker? Dans une StringList ?

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2007
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 88
    Points : 11
    Points
    11
    Par défaut
    Oui, Les fichiers ont toujours le même nom.
    Et si j'amais ils devraient en changer, il me suffirait de changer le nom dans le code.

    sinon, pour les chemin où ils se situent, cela peut être sur le Bureau, dans Program Files, dans un dosier qui se trouve sur le Bureau ou ailleurs etc..C'est aléatoire en fait.

  13. #13
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Re,

    Bon j'ai écrit ça rapidement. Ce n'est qu'un exemple que tu devras adapter à ton contexte.

    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
     
    const
      NB_FICHIER = 3;
      MesFichiers: array[0..NB_FICHIER-1] of string = ('titi.txt', 'toto.txt', 'tata.txt');
     
    implementation
     
    {$R *.dfm}
     
    procedure TForm1.TraiterDossier(APath: string);
     
      procedure TraiterFichier(APath, AFilename: string);
      begin
        if FileExists(APath + AFileName) then
        begin
          Memo1.Text := AFileName;
          WriteLn(rapport, APath + AFilename);
          // ... autres actions ...
        end
        else
          WriteLn(rapport, APath + AFilename + ': absent');
      end;
     
    var
      I: Integer;
    begin
      for I := 0 to NB_FICHIER-1 do
      begin
        TraiterFichier(Path, MesFichiers[I]);
        // ...
      end;
    end;
     
    procedure TForm1.Button1Click(Sender: TObject);
    var
      Path: string;
    begin
      Path := IncludeTrailingPathDelimiter(GetEnvironmentVariable('HOMEDRIVE'));
      TraiterDossier(Path);
    end;

    @+ Claudius

  14. #14
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2007
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 88
    Points : 11
    Points
    11
    Par défaut
    Ok merci.

    J'avoue avoir du mal a comprendre le code là...

    Je peux te poster ce que j'ai fait en MP stp?

  15. #15
    Rédacteur/Modérateur
    Avatar de ero-sennin
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    2 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 2 965
    Points : 4 935
    Points
    4 935
    Par défaut
    Salut,

    Je vois que Claudius à apporter quelques réponses .

    Déjà, pour la première question de tout à l'heure, tu avais la réponse :
    Citation Envoyé par Ero-Sennin
    Dans mon cas, ca me retourne C:
    Donc il manquait bien l'antiSlash

    En faite, le code que Claudius t'as donné, c'est traiter tes fichiers en ne spécifiant que le dossier qui les contient.

    On a :
    - TraiterDossier qui recoit en paramètre le chemin du dossier à traiter
    - TraiterFichier qui recoit en paramètres le chemin du dossier à traiter (APath) et les fichiers que tu auras défini dans ton tableau (AFileName).

    Je ne sais pas si je t'éclaires en te disant celà ...

  16. #16
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2007
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 88
    Points : 11
    Points
    11
    Par défaut
    Salut,

    c'est traiter tes fichiers en ne spécifiant que le dossier qui les contient.
    Oui, ok mais si on ne connait pas le nom du dossier contenant?

  17. #17
    Rédacteur/Modérateur
    Avatar de ero-sennin
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    2 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 2 965
    Points : 4 935
    Points
    4 935
    Par défaut
    Je te mets sur la piste, a toi de travailler un peu avant dessus

    Tu peux utiliser FindFirst et FindNext.

    Fait dessus et tu auras de la doc. Normalement tu devrais t'en sortir avec ça. Si jamais, n'hésites pas à poster

  18. #18
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2007
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 88
    Points : 11
    Points
    11
    Par défaut
    Salut,

    Yes ok, j'avais effectivement vu pour FindNext et Findfirst, mais jamais essyé.
    Je vais voir!

    Merci!

  19. #19
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2007
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 88
    Points : 11
    Points
    11
    Par défaut
    Salut à tous,

    J'ai donc repris le code que m'a gentiment passé CL@DIUS.

    Mais je n'arrive quand même pas a trouver les fichiers que je dois chercher où qu'il soient.

    Je donc tenter la methode FindFirst en consultant l'aide:

    FindFirst(const Path: string, Attr: Integer, var F: TSearchRec): Integer;

    Voici ce que cela me donne dans mon code:

    ChDir(IncludeTrailingPathDelimiter(GetEnvironmentVariable('HOMEDRIVE')));

    FindFirst('HOMEDRIVE, Test.exe', faAnyFile, F= TSearchRec)= integer;
    FindClose(F= TSearchRec);
    Mais cela ne marche aps non lus...

    C'est pas évident, je n'arrive pas a comprendre...

    si vous pouviez m'aider..

    MErci infiniment..

  20. #20
    Rédacteur
    Avatar de Pedro
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    5 411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 5 411
    Points : 8 078
    Points
    8 078
    Par défaut
    Salut
    Tu te mélanges un peu les pinceaux
    FindFirst s'utilise comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    var tsr: TSearchRec;
         i: integer;
    begin
    i := FindFirst('c:\TonRépertoire\', 'Test.exe', faAnyFile, tsr);
    while i = 0 do
    begin
      //Ton traitement
      i := FindNext(tsr);
    end;
    FindClose(tsr);
    Voila un exemple classique d'utilisation de FIndFirst, FindNext et FindClose

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 5 12345 DernièreDernière

Discussions similaires

  1. Question sur la recherche dans les chaînes de caractères
    Par Garamante dans le forum VBScript
    Réponses: 5
    Dernier message: 15/12/2008, 17h33
  2. question idiote sur terme utilisé dans les offres
    Par coyott dans le forum Emploi
    Réponses: 4
    Dernier message: 24/08/2005, 17h16
  3. Association navigables dans les deux sens
    Par DarkNagash dans le forum Diagrammes de Classes
    Réponses: 4
    Dernier message: 13/07/2005, 15h11
  4. Navigation dans les objets
    Par hunter dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 02/05/2005, 11h31
  5. Informations sur un exe (dans les propriétés windows)
    Par SteelBox dans le forum Windows
    Réponses: 6
    Dernier message: 06/07/2004, 18h20

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