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 :

Récupération d'un nom de fichier


Sujet :

Delphi

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 39
    Points : 24
    Points
    24
    Par défaut Récupération d'un nom de fichier
    Bonjour:
    J'ai un petit problème avec mon projet DELPHI . Dans une unité j'ai un bouton parcourir où l'on charge un fichier texte.
    Je voudrais récupèrer ce nom de fichier dans une autre unité , j'ai fait bien sur le uses premiere unité avec le nom de ficheir en variable globale .
    Mais le problème c'est que dés que je passe de la première à la deuxième (dans l'execution) le nom du fichier est perdu ! Alors qu'il n'y a aucune instruction qui devrait changer le nom du fichier.
    Si quelqu'un pourrait m'aider...ça serait gentil.
    merci

  2. #2
    Membre habitué
    Inscrit en
    Juin 2005
    Messages
    207
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 207
    Points : 161
    Points
    161
    Par défaut
    Tu aurais un bout de code pour nous montrer ce que tu fais?

  3. #3
    Membre éclairé
    Avatar de denokan
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2002
    Messages
    434
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2002
    Messages : 434
    Points : 746
    Points
    746
    Par défaut
    comment est déclarer le nom de ton fichier, et surtout à quel endroit ? l'as-tu bien placé avant implementation ?
    Donnez un poisson à un homme et il mangera pendant un jour... Apprenez-lui à pêcher et il s'assiéra dans une barque et boira de la bière toute la journée

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 39
    Points : 24
    Points
    24
    Par défaut
    oui bien sur je l'ai declaré avant l'implémantation,
    En fait j'ai trouvé que le probleme venait d'une boucle WHile qui écrasait le nom du fichier ,mais le probleme c'est que cette boucle while me permet de parcourir tout le fichier (while EOF(fichier)=false) pour faire des comparaisons.
    Qualqu'un saurait pourquoi elle gêne??

  5. #5
    Membre expert
    Avatar de LadyWasky
    Femme Profil pro
    Inscrit en
    Juin 2004
    Messages
    2 932
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 53
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 932
    Points : 3 565
    Points
    3 565
    Par défaut
    A mon avis, tu as du faire une confusion entre Rewrite() et Reset(), regardes de cce coté là.
    Bidouilleuse Delphi

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 39
    Points : 24
    Points
    24
    Par défaut
    non, j'ai utilisé reset() car le fichier il existe deja..

  7. #7
    Membre éclairé
    Avatar de denokan
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2002
    Messages
    434
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2002
    Messages : 434
    Points : 746
    Points
    746
    Par défaut
    Citation Envoyé par chmaichel
    ... le nom du fichier est perdu ! ...
    que veux-tu dire par là ? la variable ne renvoie pas au fichier ? tu obtiens une erreur lors de la lecture (si oui laquelle) ? le fichier ne contient plus de données ?
    Donnez un poisson à un homme et il mangera pendant un jour... Apprenez-lui à pêcher et il s'assiéra dans une barque et boira de la bière toute la journée

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 39
    Points : 24
    Points
    24
    Par défaut
    je veux dire que quand je passe de la premiere frame à la deuxieme , la variable nom_fichier devient égale à '' donc au vide..l'erreur qu'il me sort c'et au niveau de la boucle while il me dit qu'il ya violation d'adresse (E/F 60) ou un truc comme ça .. et c'est vraiment quand j'arrive à la boucle que le nom se perd .

  9. #9
    Membre expert
    Avatar de LadyWasky
    Femme Profil pro
    Inscrit en
    Juin 2004
    Messages
    2 932
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 53
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 932
    Points : 3 565
    Points
    3 565
    Par défaut
    tu l'as appelé comment ta variable globale ?

    Ca se trouve tu affectes une valeur à cette même variable dans ta boucle while.

    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
     
    interface
    ...
    var s:string;
    ...
    implementation
    procedure UneProcedure;
    begin
    ...
      s:='mon_fichier.txt';
    ...
    end;
     
    procedure TForm1.BoutonParcourirClick(..blabla..);
    var fichier:TEXT;
    begin  
      while (not EOF(fichier)) do
      begin
         readln(Fichier,s); //<--S est écrasé
      end;
    end;
    ou alors tu as du oublier de déclarer une variable locale :
    procedure TForm1.BoutonParcourirClick(..blabla..);
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    var fichier:TEXT;
                  s:string; //on rajoute une variable locale
    begin  
      while (not EOF(fichier)) do
      begin
         readln(Fichier,s); //<--le S "global" est préservé
      end;
    end;
    Dans tous les cas, si tu nous met pas de code, ce sera dur de t'aider...
    Bidouilleuse Delphi

  10. #10
    Membre expert
    Avatar de LadyWasky
    Femme Profil pro
    Inscrit en
    Juin 2004
    Messages
    2 932
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 53
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 932
    Points : 3 565
    Points
    3 565
    Par défaut
    ou bien, le truc que tu as fait :
    interface
    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
    ...
    var Fichier:string;
    ...
    implementation
    procedure UneProcedure;
    begin
    ...
      Fichier:='mon_fichier.txt';
    ...
    end;
     
    procedure TForm1.BoutonParcourirClick(..blabla..);
    var f:TEXT;
    begin  
      while (not EOF(fichier)) do //<--normal que ça ne marche pas (Violation d'acces)
      begin
     
      end;
    end;
    Solution :
    procedure TForm1.BoutonParcourirClick(..blabla..);
    var f:TEXT;
    begin
    while (not EOF(f)) do //<--c'est la variable de type text ou file qu'il faut utiliser ici
    begin

    end;
    end;
    Bidouilleuse Delphi

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 39
    Points : 24
    Points
    24
    Par défaut
    voici la partie du code qui gene
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     AssignFile(fichier,nom_fichier);
         while EOF(fichier)=false
         do
         begin
          Readln(fichier,tmp);
    avec tmp est une variable locale declaré comme string

    sinon voici le code pour le bouton parcourir

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    procedure TFichier.BtnParcourirClick(Sender: TObject);
     BEGIN
        openDialog1.execute;
        maskedit1.Text:= openDialog1.Filename;
        nom_fichier:=openDialog1.FileName;
       showmessage(nom_fichier);
     
     END;
    nom_fichier est une variable globale..
    merci

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 39
    Points : 24
    Points
    24
    Par défaut
    l'erreur est E/S 140

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 39
    Points : 24
    Points
    24
    Par défaut
    plutot 104

  14. #14
    Membre expert
    Avatar de LadyWasky
    Femme Profil pro
    Inscrit en
    Juin 2004
    Messages
    2 932
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 53
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 932
    Points : 3 565
    Points
    3 565
    Par défaut
    :code:

    Déjà, ton code pour choisir un fichier est à prendre avec des pincettes, comme ceci, ce serait mieux :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    procedure TFichier.BtnParcourirClick(Sender: TObject);
     BEGIN
        if openDialog1.execute then
       begin
          maskedit1.Text:= openDialog1.Filename;
          nom_fichier:=openDialog1.FileName;
          showmessage(nom_fichier);
      end;
     END;
    Et par sécurité :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    if FileExist(nom_fichier) then
    begin
         AssignFile(fichier,nom_fichier);
         while EOF(fichier)=false
         do
         begin
          Readln(fichier,tmp);
        ...
       end;
       Close(fichier); //<-- tu ne l'as pas oublié celui ci ?
    end;
    Ou sinon, ne serait-ce pas une histoire de Noms de fichiers courts et de fichier longs par hasard (ça m'étonnerait, mais bon) ?

    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    nom_fichier:=openDialog1.FileName; //Nom long récupéré
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    AssignFile(fichier,nom_fichier); //Nom court attendu
    Bidouilleuse Delphi

  15. #15
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 39
    Points : 24
    Points
    24
    Par défaut
    merci pour ton conseil,
    Pour le probleme j'ai trouvé c'est uqe j'ai pas declaré le fichier avant l'implémantation, je me suis soucié du nom_fichier et oublié le fichier:textfile.
    Merci beacoup pour vos réponses.

  16. #16
    Membre expert
    Avatar de LadyWasky
    Femme Profil pro
    Inscrit en
    Juin 2004
    Messages
    2 932
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 53
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 932
    Points : 3 565
    Points
    3 565
    Par défaut
    A l'avenir n'oublie pas les balises

    Et n'oublie pas le petit bouton

    Merci
    Bidouilleuse Delphi

  17. #17
    Membre éclairé
    Avatar de denokan
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2002
    Messages
    434
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2002
    Messages : 434
    Points : 746
    Points
    746
    Par défaut
    Citation Envoyé par chmaichel
    oui bien sur je l'ai declaré avant l'implémantation,
    Citation Envoyé par chmaichel
    j'ai trouvé c'est uqe j'ai pas declaré le fichier avant l'implémantation

    la prochaine fois je mord !!!
    Donnez un poisson à un homme et il mangera pendant un jour... Apprenez-lui à pêcher et il s'assiéra dans une barque et boira de la bière toute la journée

  18. #18
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 39
    Points : 24
    Points
    24
    Par défaut
    la premiere je parlais du nom_fichier et la deuxieme je parlais du fichier, il ya une différence entre les deux

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

Discussions similaires

  1. Récupération d'un nom de fichier lors de l'upload
    Par adel25 dans le forum Langage
    Réponses: 3
    Dernier message: 01/02/2009, 19h39
  2. Récupération d'un nom de fichier
    Par t0ny95 dans le forum Débuter
    Réponses: 9
    Dernier message: 31/07/2008, 14h05
  3. script batch - récupération d'un nom de fichier
    Par persam dans le forum Windows
    Réponses: 1
    Dernier message: 19/07/2007, 10h45
  4. Récupération d'un nom de fichier et d'un répertoire
    Par laurentdepibrac dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 04/07/2007, 10h36
  5. [RegEx] Récupération d'un nom de fichier
    Par cbb51800 dans le forum Langage
    Réponses: 5
    Dernier message: 14/11/2006, 09h36

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