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 E/S 32 lors de l'écriture dans un fichier text.


Sujet :

Delphi

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 96
    Points : 41
    Points
    41
    Par défaut Erreur E/S 32 lors de l'écriture dans un fichier text.
    Bonjour,

    Voila mon probleme est que lorsque j'appelle la premiere fois EcrireFichierText tout va bien mais lorsque je la rappel, j'ai une erreur E/S 32.

    Mais je ne trouve pas pourkoi.
    Voila le code si vous pouvez m'aidez merci.
    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
     
    procedure TForm1.EcrireFichierTexte(NomFichier : string);
    begin
     {$I+}
     AssignFile(Fichier , NomFichier);//'nom_du_fichier.txt');
     
     if FileExists(NomFichier) then
      begin
        DeleteFile(NomFichier);
        Rewrite(Fichier); //si vous voulez ecraser le fichier
        Write(Fichier, spSkinEdit2.Text); //ajoute un mot dans le fichier
        CloseFile(Fichier); //ferme le fichier
      end
     else
       begin
     Rewrite(Fichier); //si vous voulez ecraser le fichier
     Write(Fichier, spSkinEdit2.Text); //ajoute un mot dans le fichier
     CloseFile(Fichier); //ferme le fichier
     end;
    end;

  2. #2
    Membre émérite Avatar de edam
    Homme Profil pro
    Développeur Delphi/c++/Omnis
    Inscrit en
    Décembre 2003
    Messages
    1 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Delphi/c++/Omnis
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 894
    Points : 2 771
    Points
    2 771
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    procedure TForm1.EcrireFichierTexte(NomFichier : string);
    begin
     {$I-}  // pour désactivé les exceptoion E/S
     AssignFile(Fichier , NomFichier);//'nom_du_fichier.txt');
     Rewrite(Fichier); //si vous voulez ecraser le fichier siil existe si non vous le créyé
     Write(Fichier, spSkinEdit2.Text); //ajoute un mot dans le fichier
     CloseFile(Fichier); //ferme le fichier
    end;
    car tu as mis rewrite quelque soit l'etat d'existance de fichier
    en plus utilise TStrings si votre fichier est un text

  3. #3
    Membre expert
    Avatar de Eric Sigoillot
    Inscrit en
    Mars 2002
    Messages
    1 212
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 212
    Points : 3 369
    Points
    3 369
    Par défaut
    Citation Envoyé par edam
    car tu as mis rewrite quelque soit l'etat d'existance de fichier
    Rien à voir.

    Rewrite permet de réécrire par dessus un fichier, en créant le fichier au passage si celui-ci n'existe pas. Le code que tu as utilisé yosthegost est redondant : inutile d'effacer le fichier avant de réécrire par dessus avec Rewrite. Le fichier sera quoiqu'il arrive écrasé.

    Ton code peut donc se résumer à ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    AssignFile(Fichier , NomFichier);//'nom_du_fichier.txt');
    Rewrite(Fichier); //si vous voulez ecraser le fichier
    Write(Fichier, spSkinEdit2.Text); //ajoute un mot dans le fichier
    CloseFile(Fichier); //ferme le fichier
    Cependant, ça ne va pas corriger ton erreur ! L'erreur d'entrée/sortie 32 correspond à une violation de partage. Autrement dit, le fichier que tu essaies d'écraser est déjà ouvert en accès exclusif soit par ton application, soit par une autre application. Il faut que le fichier soit refermé pour que tu puisses y accéder.

    @++

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 96
    Points : 41
    Points
    41
    Par défaut
    Citation Envoyé par Eric Sigoillot
    Rien à voir.

    Rewrite permet de réécrire par dessus un fichier, en créant le fichier au passage si celui-ci n'existe pas. Le code que tu as utilisé yosthegost est redondant : inutile d'effacer le fichier avant de réécrire par dessus avec Rewrite. Le fichier sera quoiqu'il arrive écrasé.

    Ton code peut donc se résumer à ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    AssignFile(Fichier , NomFichier);//'nom_du_fichier.txt');
    Rewrite(Fichier); //si vous voulez ecraser le fichier
    Write(Fichier, spSkinEdit2.Text); //ajoute un mot dans le fichier
    CloseFile(Fichier); //ferme le fichier
    Cependant, ça ne va pas corriger ton erreur ! L'erreur d'entrée/sortie 32 correspond à une violation de partage. Autrement dit, le fichier que tu essaies d'écraser est déjà ouvert en accès exclusif soit par ton application, soit par une autre application. Il faut que le fichier soit refermé pour que tu puisses y accéder.

    @++

    Alors si j'ai bien compri je doit donc refermer mon fichier. car je fait la lecture tel quel :
    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
     
    function TForm1.LireFichierTexte(NomFichier : string):string;
    var
     Chaine: Char;
     Test : string;
    begin
     {$I+}
       Test:='';
       AssignFile(fichier , NomFichier);
      if FileExists(NomFichier) then
        begin
        Reset(Fichier);
         while not EOF(Fichier) do
          begin
            Read(fichier, Chaine);
            Test := Test + Chaine;
          end;
           Result:= Test;
        end;
    end;
    Quand doit -je le fermer?

    Merci

  5. #5
    Membre émérite Avatar de edam
    Homme Profil pro
    Développeur Delphi/c++/Omnis
    Inscrit en
    Décembre 2003
    Messages
    1 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Delphi/c++/Omnis
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 894
    Points : 2 771
    Points
    2 771
    Par défaut
    Citation Envoyé par Eric Sigoillot
    .

    Ton code peut donc se résumer à ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    AssignFile(Fichier , NomFichier);//'nom_du_fichier.txt');
    Rewrite(Fichier); //si vous voulez ecraser le fichier
    Write(Fichier, spSkinEdit2.Text); //ajoute un mot dans le fichier
    CloseFile(Fichier); //ferme le fichier
    @++
    c'est ce que je veux dire
    remplasse {$i+} par {$i-}

  6. #6
    Membre expert
    Avatar de Eric Sigoillot
    Inscrit en
    Mars 2002
    Messages
    1 212
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 212
    Points : 3 369
    Points
    3 369
    Par défaut
    Citation Envoyé par yosthegost
    Quand doit -je le fermer?
    Dès que tu as fini de l'utiliser. A la fin d'une lecture ou d'une écriture, et quoiqu'il arrive, à la fin de ta procédure dans ce cas.

    @++

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 96
    Points : 41
    Points
    41
    Par défaut
    Ok merci bocoup

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

Discussions similaires

  1. Problème lors de l'écriture dans un fichier texte
    Par Iron-Avenger dans le forum Débuter
    Réponses: 8
    Dernier message: 28/04/2013, 11h13
  2. Blocage lors de l'écriture dans un fichier
    Par yoyostras dans le forum Débuter
    Réponses: 7
    Dernier message: 26/06/2007, 15h16
  3. Problème lors de l'écriture dans un fichier.
    Par captainflex dans le forum Ruby on Rails
    Réponses: 2
    Dernier message: 16/05/2007, 13h42
  4. Réponses: 8
    Dernier message: 13/11/2006, 11h19
  5. Passer à la ligne lors de l'écriture dans un fichier
    Par hams dans le forum Assembleur
    Réponses: 4
    Dernier message: 17/04/2005, 19h25

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