Erreur avec Write

Francislaremote Messages postés 1 Date d'inscription lundi 7 avril 2003 Statut Membre Dernière intervention 6 novembre 2007 - 6 nov. 2007 à 17:56
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 - 6 nov. 2007 à 22:53
Bonjour,
J'ai programmé pendant deux ans sur Delphi mais pour divers raisons j'ai du arreter durant 5 année. Je m'y remets à présent mais non sans difficulté.
J'ai récuperé un bout de code très simple d'un de mes anciens programmes pour enregistrer le contenu d'un arbre dans un fichier, malheureusement il ne marche plus. Voici le code

procedure TForm1.WriteArbre (noeud : PArbre);
var
    fichier : File of Tarbre;
    arbre : TArbre ;
begin
     Assignfile(fichier,'mpbdd.dat');
     if FileExists('mpbdd.dat') then Reset(fichier)
     else Rewrite(fichier);
     Seek(fichier, FileSize(fichier));
     arbre := noeud^;
     Write(fichier,arbre);
     CloseFile(fichier);
end;

Le programme plante à chaque fois lors du write avec l'erreur Einouterror (sauf lors du premier enregristrement si le fichier n'existe pas). File access denied. Pourtant le fichier n'est pas utilisé par un autre programme ou protégé, je n'utilise ce fichier à aucun autre endroit de monde code, donc il n'y a pas d'autre Assignfile qui ne serait pas fermé.
Si quelqu'un a une idée, c'est avec plaisir que je la lirai, merci

1 réponse

cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
6 nov. 2007 à 22:53
Le fichier ne serait-il pas resté "locked" lors d'un précédent plantage ?
Deux solutions pour vérifier :
1- changer le nom du fichier de sortie et tester
2- redémarrer le système pour libérer les verrous et réessayer avec le même code.

Suggestion : toujours mettre les opérations d'écriture/lecture de fichier dans un bloc de protection try...finally...end avec, bien évidemment, le closefile dans la dernière partie.

May Delphi be with you !
<hr color="#008000" />
Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.
http://www.afipa.net/
0
Rejoignez-nous