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 :

[Lazarus] Test de l'existence des fichiers


Sujet :

Lazarus Pascal

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Août 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : Août 2007
    Messages : 10
    Par défaut [Lazarus] Test de l'existence des fichiers
    Bonjour,

    Voila, j'ai un petit programme dans lequel je teste l'existence d'un fichier grace a la fontion Not_Exist :

    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
     
    function not_exist(var Fich : File) : boolean;
    begin
        {$I-}
        Reset(fich);
        {$I+}
        if IOResult = 0 then
        begin
           not_exist := False;
           close(Fich);
        end
        else not_exist := True;
    end;
     
    procedure TForm_general.FormCreate(Sender: TObject);
    Var NomFichier : file ;
    begin
       Assignfile(NomFichier, 'Categ.Dbf');
       If not_exist(NomFichier) then
       begin
            Dbf_Cat.TableLevel := 4;
            Dbf_Cat.TableName := 'Categ.dbf';
            With Dbf_Cat.FieldDefs do
            begin
                 Add('CAT', ftString, 2, True);
                 Add('LIBELLE', ftString, 35, True);
                 Add('COT_OBLIG', ftboolean,0,true);
                 Add('POSSIB_APP', ftboolean,0,true);
                 Add('COTISATION', ftfloat,0,true);
            End;
            Dbf_Cat.CreateTable;
       end;
    end;
    Je teste donc dès la création du Tform l'existence des fichiers à utiliser.
    Si mon fichier existe, je l'ouvre sinon, je le crée ce qui exclut normalement tout risque d'erreur.

    Tout ça fonctionne à merveille quand je compile et exécute sous W98. Et quand j'exécute sous XP, ça plante ! Il me dit que le fichier n'existe pas (alors qu'il existe bien !). Et même en admettant qu'il n'existe pas, il devrait me le créer ... Alors pourquoi ?

    A+

  2. #2
    Rédacteur/Modérateur
    Avatar de M.Dlb
    Inscrit en
    Avril 2002
    Messages
    2 466
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 466
    Par défaut
    Il me semble que IOResult est une variable DOS, ce qui explique qu'elle ne soit plus utilisée sous XP, ce qui explique que XP te renvoie toujours une valeur eronnée. Enfin il n'y a pas d'instruction pour creéer ton fichier si il n'existe pas, Reset ne crée pas de fichier et retourne simplement une erreur. Tu devrais faire quelque chose comme:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Assignfile(NomFichier, 'Categ.Dbf');
       If not_exist(NomFichier) then
       begin
          Rewrite(NomFichier, 'Categ.Dbf');
          Dbf_Cat.TableLevel := 4;
          Dbf_Cat.TableName := 'Categ.dbf';
    Après il faudra adapter ton code pour Lazarus. Sous Delphi, je sais qu'il existe la fonction FileExist pour savoir si un fichier existe ou pas. Il faut peut-être l'utiliser ?

  3. #3
    Membre émérite
    Avatar de chris37
    Homme Profil pro
    Directeur des systèmes d'information
    Inscrit en
    Juillet 2007
    Messages
    378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France

    Informations professionnelles :
    Activité : Directeur des systèmes d'information
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 378
    Par défaut
    Bonjour,

    le FileExiste existe aussi sous Lazarus !

    et fonctionne sous xp ou ubuntu
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if FileExists(ExtractFilePath(Application.ExeName)+'lotus.db3')then
       ShowMessage('Trouve');
    Ce code fonctionne correctement chez moi !

    Cordialement,

    Chris

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Août 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : Août 2007
    Messages : 10
    Par défaut
    Merci,

    Je teste ça ce soir... Là je suis sur le poste Windows 98 et je n'ai pas le temps de voir...

    Il va me falloir une bonne remise à niveau moi

    A+

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

Discussions similaires

  1. vérifier existance des fichiers
    Par big1 dans le forum Windows
    Réponses: 3
    Dernier message: 05/06/2007, 13h18
  2. [Lazarus] Problème pour l'utilisation des fichiers
    Par Lulu_n10 dans le forum Lazarus
    Réponses: 7
    Dernier message: 30/03/2007, 16h54
  3. Test de l'existence de fichiers
    Par michel99 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 22/02/2007, 12h10
  4. Problème de test sur la taille des fichiers
    Par gregal dans le forum Langage
    Réponses: 7
    Dernier message: 12/12/2006, 20h57
  5. [LG]pour l'existence des fichiers en pascal
    Par mister_dsg dans le forum Langage
    Réponses: 8
    Dernier message: 04/12/2003, 22h14

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