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 :

Erreur aléatoire sur l'écriture d'un fichier


Sujet :

Delphi

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 42
    Par défaut Erreur aléatoire sur l'écriture d'un fichier
    Bonsoir

    J'ai un soucis avec l'écriture d'un fichier sur l'évènement Form OnClose dans mon éditeur de programmation.
    Mon but étant de mettre un chemin vers les fichiers qui sont ouverts dans mon éditeur à la fin pour qu'ils soient réouvert à la prochaine ouverture. La réouverture fonctionne bien. Je stocke donc dans un fichier situé ./configuration/session.txt un nom de fichier par ligne.

    Mais le problème c'est que l'écriture fonctionne que quand elle veut le reste du temps elle lève une erreur sur le Rewrite (mauvais fichier)

    Voici 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
    26
    procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
    var
      Fic: TextFile;
      nb, i : integer;
      page : TTabSheet;
      S: string;
      syn : TSynEdit;
    begin
    	deletefile(NameFicOpen);
    	AssignFile(Fic, NameFicOpen);
       {$I-}      // instruction pour le compilateur
    	Rewrite(Fic);
       {$I+}
       if IOResult <> 0 then MessageDlg('Erreur avec le fichier.', mtConfirmation, [mbOK], 0);
       nb := Form1.PageControl1.PageCount;
       for i:=0 to nb-1 do begin
          page := Form1.PageControl1.Pages[i];
          syn := TSynEdit(page.FindComponent('SynEdit'+ page.Name));
          if(syn.Modified = true) then
          	if MessageDlg('Voulez vous enregistrer les modifications de ' + page.Caption +  'avant de fermer l''application?', mtConfirmation, [mbYes, mbNo], 0) = mrYes then
    			    	Form1.FichierSaveExecute(Sender);
    	  	if (page.Tag = 0) then
          	Writeln(Fic, page.Hint);
       end;
      	CloseFile(Fic);
    end;
    Je vois pas pourquoi ça ne marche pas toujours même après avoir forcé la destruction du fichier avant de le réécrire.
    Est ce qu'il faut un chemin complet et non relatif ?

    Quelqu'un aurait une idée ? Parce que moi je sèche.

    Merci d'avance.

  2. #2
    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
    Par défaut
    Salut
    As-tu véfifié que NameFichOpen contient bien un nom correct lors de l'éxectuion à l'aide de breakpoint?
    De plus il y a plusieurs erreurs dans ton code:
    • Si le fichier n'a pas pu s'ouvrir, l'éxection continue quand même et essaie d'écrire dedans.
    • Le CloseFile se fait même lorsque le fichier n'a pas pu s'ouvrir
    Essaie comme ça:
    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
     
    procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
    var
      Fic: TextFile;
      nb, i : integer;
      page : TTabSheet;
      S: string;
      syn : TSynEdit;
    begin
        DeleteFile(NameFicOpen);
        AssignFile(Fic, NameFicOpen);
       {$I-}      // instruction pour le compilateur
        Rewrite(Fic);
       {$I+}
       if IOResult = 0 then
       begin
         nb := Form1.PageControl1.PageCount;
         for i:=0 to nb-1 do begin
            page := Form1.PageControl1.Pages[i];
            syn := TSynEdit(page.FindComponent('SynEdit'+ page.Name));
            if(syn.Modified = true) then
                if MessageDlg('Voulez vous enregistrer les modifications de ' + page.Caption +  'avant de fermer l''application?', mtConfirmation, [mbYes, mbNo], 0) = mrYes then
                          Form1.FichierSaveExecute(Sender);
                if (page.Tag = 0) then
                Writeln(Fic, page.Hint);
         end;
            CloseFile(Fic);
      end else
        MessageDlg('Erreur avec le fichier.', mtConfirmation, [mbOK], 0);
    end;
    Pour finir, je te conseille vivement d'utiliser les TStringList si le fichier texte n'est pas trop gros.
    Pedro
    Aucune réponse aux sollicitations techniques par MP

    Faut pas attendre d'en avoir besoin pour s'en servir... (Lucien Stéphane)

    Les pages Source C'est bon. Mangez-en!
    Le défi Delphi
    Règles du forum - FAQ Delphi - Pensez au chtit
    Aéroclub Bastia Saint-Exupéry

  3. #3
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2005
    Messages
    218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 218
    Par défaut
    Si ca plante sur le rewrite, c'est que probablement ton fichier est soit "locké" par ton programme ou un autre programme, soit en lecture seule car je ne vois pas d'autres raisons à ce que cela puisse planter à ce niveau là.

    Dés que tu ouvres un fichier par un reset ou un rewrite il faut poser un try finally pour fermer ton fichier du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Rewrite(fichier)
    try
      mes Instructions
    finally
      CloseFile(Fichier)
    end;
    Ton problème se situe donc probablement sur la réouverture des derniers fichiers que tu as ouvert et pas seulement à ce niveau du programme.

  4. #4
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 236
    Par défaut
    Pour ma part je serai du même avis que Pedro pour l'utilisation d'un TStringList.

    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
     
    procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
    var
      lst : TStringList;
      nb, i : integer;
      page : TTabSheet;
      S: string;
      syn : TSynEdit;
    begin
      lst := TStringList.Create;
      try
        for i:=0 to PageControl1.PageCount - 1 do 
        begin
          page := PageControl1.Pages[i];
          syn := TSynEdit(page.FindComponent('SynEdit'+ page.Name));
          if(syn.Modified = true) then
            if MessageDlg('Voulez vous enregistrer les modifications de ' + page.Caption +  'avant de fermer l''application?', mtConfirmation, [mbYes, mbNo], 0) = mrYes then
              FichierSaveExecute(Sender);
          if (page.Tag = 0) then
            lst.Add(page.Hint);
        end; // for
        try
          lst.saveToFile(NameFicOpen);
        Except on E:Exception do 
          MessageDlg('Erreur avec le fichier.', mtConfirmation, [mbOK], 0);
        end;
      finally
        lst.free;
      end;
    end;
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  5. #5
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2005
    Messages
    218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 218
    Par défaut
    Si le fichier est locké, le fait d'utiliser à cet endroit du code un TStringList ne règlera pas plus le problème...

  6. #6
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 236
    Par défaut
    Le problème peut venir du fait qu'il delete le fichier et l'ouvre tout de suite, avec le TStringList, il n'y a pas de problème vu que c'est lui qui se charge de l'écrasement du fichier.

    Il serait même bien de connaitre le IORESULT qu'il retourne, ca nous aiderai grandement pour savoir d'où vient le problème
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  7. #7
    Expert confirmé
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11 163
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 163
    Par défaut
    Ça manque d'informations précises, tout ça.
    Essaye donc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
       {$I-}      // instruction pour le compilateur
        Rewrite(Fic);
        showMessage(SysErrorMessage(GetLastError));
       {$I+}
    Avec peut-être un test sur GetLastError que c'est pas la peine que ça affiche 'Opération réussie' quand tout va bien.
    On y verra plus clair.
    Mes 2 cts,
    --
    jp

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 42
    Par défaut
    Ok merci tous le monde
    Je vais regarder tout ça et je vous tiens au courant

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 42
    Par défaut
    Voilà comme dit plus haut je vous tiens au courant mais je ne reviens pas avec de bonne nouvelle malheureusement.

    J'ai réécris la procédure en suivant vos conseils :

    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
    procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
    var
      i : integer;
      page : TTabSheet;
      lst : TStringList;
    begin
       lst := TStringList.Create;
       try
    	for i:=0 to PageControl1.PageCount-1 do begin
       		page := Form1.PageControl1.Pages[i];
          	if (page.Tag = FileStateModified) then
          		if MessageDlg('Voulez vous enregistrer les modifications de ' + page.Caption +  ' avant de fermer l''application?', mtConfirmation, [mbYes, mbNo], 0) = mrYes then
    			Form1.FichierSaveExecute(Sender);
    		  	if (page.Tag <> FileStateNew) then
       	   	lst.Add(page.Hint);
    	   end;
          try
          	{$I-}      // instruction pour le compilateur
    	deletefile(NameFicOpen);
          	showMessage(SysErrorMessage(GetLastError)+ ' ShowMessage pour le fichier:' + NameFicOpen);
    	   	{$I+}
          	lst.saveToFile(NameFicOpen);
    		Except on E:Exception do
          	MessageDlg('Erreur avec le fichier.', mtConfirmation, [mbOK], 0);
        	end;
    	finally
       	lst.free;
    	end;
    end;
    Cependant j'ai toujours le problème. Je vais essayer de vous le détailler un peu plus. Dans mes essais, le fichier de sauvegarde contient à l'heure actuel 3 fichiers :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    D:\EasyPHP1-8\www\Perso\index.php
    D:\EasyPHP1-8\www\Perso\menu.php
    D:\EasyPHP1-8\www\Perso\required.php
    Lors du lancement de l'application aucun problème, les trois fichiers ci-dessus sont ouvert.
    Si je quitte directement sans rien faire aucun problème avec le code ci-dessus.
    Malheureusement si j'ouvre un autre fichier j'obtiens les messages d'erreurs suivants :
    Le chemin d'accès spécifié est introuvable
    ShowMessage pour le fichier:configuration/session.txt
    Le projet PhpEditeur.exe a provoqué une classe d'exception EFCreateError avec le message 'Impossible de créer le fichier configuration/session.txt'. Processus stoppé. Utilisez Pas-à-pas ou Exécuter pour continuer.
    Je précise que NameFicOpen est déclaré en tant que constante juste avant
    var
    Form1: TForm1;
    implementation
    uses Configuration, ShellAPI;

    par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    const ChConfig = 'configuration/';
    const NameFicOpen = ChConfig + 'session.txt';
    C'est p-e là mon erreur ?
    Voilà je comprends toujours pas, j'espère que le détail que je viens de faire vous permettra de comprendre.

    Merci d'avance.

    Jojo

  10. #10
    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
    Par défaut
    Et si tu essayais de remplacer le "/" par un "\" dans ta constante
    Pedro
    Aucune réponse aux sollicitations techniques par MP

    Faut pas attendre d'en avoir besoin pour s'en servir... (Lucien Stéphane)

    Les pages Source C'est bon. Mangez-en!
    Le défi Delphi
    Règles du forum - FAQ Delphi - Pensez au chtit
    Aéroclub Bastia Saint-Exupéry

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 42
    Par défaut
    C'est encore plus bizarre

    Ouverture fermeture sans rouvrir de fichier:
    j'ai eu des messages d'erreurs différents (C'est le deuxième qui revient le plus souvent :

    Le fichier spécifié est introuvable ShowMessage pour le fichier:configuration\session.txt
    Accès refusé ShowMessage pour le fichier:configuration\session.txt
    Ouverture rajout de fichiers fermeture.
    L'écriture se fait bien dans le fichier mais j'ai eu des erreurs aussi

    Le chemin d'accès spécifié est introuvable ShowMessage pour le fichier:configuration\session.txt
    Le projet PhpEditeur.exe a provoqué une classe d'exception EFCreateError avec le message 'Impossible de créer le fichier configuration\session.txt'. Processus stoppé. Utilisez Pas-à-pas ou Exécuter pour continuer.

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 42
    Par défaut
    Je ne sais pas si ça peut avoir un lien mais je travaille sur une machine en raid 0.

  13. #13
    Expert confirmé
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11 163
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 163
    Par défaut
    À mon avis, tu dois te balader dans l'arborescence et c'est pour ça que tu te prends des "fichier introuvable", puisque tu donnes un chemin relatif.
    À vérifier à coups de ShowMessage(extraction_du_current_path);

    Plutôt que de faire directement "DeleteFile(NameFicOpen)", fais donc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if FileExists(NameFicOpen) then DeleteFile(NameFicOpen)
    ---(je garde ce qui précède, écrit avant d'avoir vu ça : )---

    Je ne sais pas si ça peut avoir un lien mais je travaille sur une machine en raid 0.
    Ah, ça peut ralentir un peu : moi je rajouterai des sleep, ou peut-être existe-t-il une commande similaire à "sync" sous Linux -- je ne sais pas.

    Mes 2 cts,
    --
    jp

  14. #14
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2005
    Messages
    218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 218
    Par défaut
    Même avis que Jipété, tu dois changer le répertoire courant de ton appli. ce qui fait que le répertoire "configuration" n'existe plus dans le répertoire où tu te positionnes.

    Pourquoi n'essaierais tu pas tout simplement d'écrire dans
    ExtractFilePath(Application.ExeName) + '\configuration\session.txt' pour voir ce que ca donne?

    A mon avis, si le nom de ton fichier était session.txt et non configuration\session.txt, tu ne devrais plus avoir d'erreur par contre tu devrais retrouver des fichiers session.txt dans plusieurs répertoires...

    Quand au sleep pas vraiment convaincu même sur du raid 0.

  15. #15
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 42
    Par défaut
    Bon visiblement plus aucun problème.
    Alors que je n'ai rien changé depuis hier soir

    Pourtant j'ai pas fumé ni bu hier soir ni même ce matin

    Je ne sais pas ce qui c'est passé.
    J'ai quand même regardé avec le ExtractFilePath(Application.ExeName)
    C'est bien le bon fichier à chaque fois.

    Et normalement je n'ai pas codé de changedir ou autre. Je me demande si c'est pas mon contrôleur Raid qui a mal fonctionné hier.
    Enfin le principal c'est que ça fonctionne maintenant.

    Merci pour vos aides

    Et op un petit résolu.

  16. #16
    Expert confirmé
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11 163
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 163
    Par défaut
    Ben si j'étais toi, j'implémenterais tout un tas de tests et de vérifications, car ce qui s'est produit une fois peut se reproduire une seconde fois ou pire, une deuxième fois...

    Et je jetterais un oeil avec l'ami Scandisk ou autre.

    Mes 2 cts,
    --
    jp

  17. #17
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 42
    Par défaut
    Bon bah finalement ce n'est pas résolu du tout.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Le projet PhpEditeur.exe a provoqué une classe d'exception EFCreateError avec le message 'Impossible de créer le fichier configuration\session.txt'.  Processus stoppé. Utilisez Pas-à-pas ou Exécuter pour continuer.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Erreur avec le fichier.pour le fichier:D:\Documents and Settings\Jorael\Bureau\Delphi\SebEditor2\configuration\session.txt
    Comme l'atteste le deuxième message d'erreur c'est le bon chemin.
    Alors je ne comprends pas surtout que j'utilise d'autres fichiers (fichiers ini pour la configuration de l'éditeur, pour la coloration syntaxique, fichier XML pour un tree view..etc..) et je n'ai pas d'erreur avec eux juste celui là ...

    Je vais faire un scan disk sur mon unité raid mais pour finir je doute que ça vienne de là.

  18. #18
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2005
    Messages
    218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 218
    Par défaut
    Ce qui me semble bizarre, c'est que dans le premier message tu n'aies pas l'intégralité du chemin. Tu as essayé d'ajouter dans l'assignfile le path complet de ton application comme je l'ai indiqué dans mon précédent post?

    J'ai quand même regardé avec le ExtractFilePath(Application.ExeName)
    C'est bien le bon fichier à chaque fois
    .
    Qu'est ce que tu as regardé? Le chemin de l'application est fixe celui que tu passes est relatif et dépend du répertoire courant de l'application qui n'est pas le même que celui de l'application.

    Pour connaitre le chemin courant de ton appli tu peux essayer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    procedure TForm1.Button1Click(Sender: TObject);
    var
      CheminCourant: array[0..MAX_PATH] of char;
    begin
      GetCurrentDirectory(sizeof(CheminCourant), CheminCourant);
    end;
    Et normalement je n'ai pas codé de changedir ou autre. Je me demande si c'est pas mon contrôleur Raid qui a mal fonctionné hier.
    Tu n'ouvres pas des fichiers par une TOpenDialog?

  19. #19
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 236
    Par défaut
    Jorael, quand tu ouvres ton fichier session à l'ouverture de ton programme, penses tu à le refermer ?
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  20. #20
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 42
    Par défaut
    Alors voici ma portion de code qui permet de réouvrir les fichiers dont le chemin est sauvegardé dans le fichier sessions.txt. Je n'ai aucun problème avec.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    if(fileexists(NameFicOpen) = true) then begin
             lst := TStringList.Create;
    		   try
                lst.LoadFromFile(NameFicOpen);
                for i:=0 to lst.Count-1 do begin
                	Form1.CreateOnglet(lst.Strings[i], FileStateSaved);
    			      SynEdit.Lines.LoadFromFile(lst.Strings[i]);
                end;
             Except on E:Exception do
          		MessageDlg('Erreur avec le fichier.', mtConfirmation, [mbOK], 0);
    	      end;
          end;
    Ensuite j'ai fait des controles sur mon unité raid pas d'erreur pour le moment.

    Pour répondre à Macumba

    Tu n'ouvres pas des fichiers par une TOpenDialog?
    Les fichiers php oui . Serait-ce ça qui modifierait le chemin courant de l'application ?
    J'ai aussi un panel avec un petit explorateur de fichier à la windows qui me permet d'ouvrir les fichiers rapidement.

    J'ouvre maintenant le fichier de cette manière là :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ExtractFilePath(Application.ExeName) + NameFicOpen
    Je vous tiens au courant si il y a changement ou non car je n'ai pas eu le temps aujourd'hui de me servir de l'application.

    Merci pour tout

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

Discussions similaires

  1. Message d'erreur aléatoire sur Form.Visible
    Par bvsud dans le forum Langage
    Réponses: 5
    Dernier message: 07/12/2012, 21h44
  2. [Vxi3] Erreur aléatoire sur LOV
    Par NorocBzh dans le forum Webi
    Réponses: 2
    Dernier message: 23/12/2011, 08h12
  3. Erreur aléatoire sur File.delete
    Par davelop dans le forum ASP.NET
    Réponses: 5
    Dernier message: 11/12/2009, 17h07
  4. Erreurs aléatoires sur graphique à bulles
    Par RGShoop dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 13/06/2008, 16h29
  5. Erreur aléatoire sur une fonction
    Par defluc dans le forum Firebird
    Réponses: 8
    Dernier message: 10/09/2007, 16h34

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