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

C++/CLI Discussion :

Lecture/Ecriture dans un fichier


Sujet :

C++/CLI

  1. #1
    Membre chevronné Avatar de niglo
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    379
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 379
    Par défaut Lecture/Ecriture dans un fichier
    Hello,

    je développe actuellement une appli de config d'un fichier .cfg

    Pour lire les données dans le fichier, j'utilise un StreamReader :

    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
    	String^			o_ligne					= "";
    	StreamReader^	o_streamFichier;
    	ArrayList^		o_fichierLigneParLigne = gcnew ArrayList();
     
    	OpenFileDialog^ openFileDialog1 = gcnew OpenFileDialog;
    	if ( openFileDialog1->ShowDialog() == System::Windows::Forms::DialogResult::OK )
    	{
    		if ((openFileDialog1->OpenFile()) != nullptr )
    		{
    			o_streamFichier		= gcnew StreamReader(openFileDialog1->FileName);
    			// traitement des données...
     
    		o_streamFichier->DiscardBufferedData();
    		o_streamFichier->Close();
    		delete o_streamFichier;
    		}
    	}
    ensuite, l'utilisateur peut faire des modifs via l'interface proposé et sauvegarde le tout dans le même fichier .cfg
    J'utilise un StreamWriter pour écrire les données dans le fichier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    		String^			o_ligne = "";
    		StreamWriter^	o_streamFichier;
    		SaveFileDialog^ saveFileDialog1 = gcnew SaveFileDialog;
    		if ( saveFileDialog1->ShowDialog() == System::Windows::Forms::DialogResult::OK )
    		{
    			o_streamFichier = gcnew StreamWriter(saveFileDialog1->FileName, false);
    		// traitement des données
    		o_streamFichier->Close();
    		delete o_streamFichier;
    		}
    Malheureusement, cela ne fonctionne pas.
    J'ai l'exception
    The process cannot access the file 'D:\PROJET\config.cfg' because it is being used by another process.
    au niveau de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    o_streamFichier = gcnew StreamWriter(saveFileDialog1->FileName, false);
    J'ai essayé de mettre o_streamFichier->Dispose, mais j'ai une erreur de compilation m'indiquant que Dispose ne fait pas parti de la classe "StreamReader".

    Quelqu'un aurait une idée pour résoudre ce problème ?
    Merci.

  2. #2
    Membre chevronné Avatar de niglo
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    379
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 379
    Par défaut
    Pour ceux que ça intéresse, j'ai corrigé le problème :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Stream^	o_streamFichier;
    OpenFileDialog^ openFileDialog1 = gcnew OpenFileDialog;
     
    if ( openFileDialog1->ShowDialog() == System::Windows::Forms::DialogResult::OK )
    {
    	if ((streamFichier = openFileDialog1->OpenFile()) != nullptr )
    	{
    		// traitement des données...
    		streamFichier->Close();
    	}

  3. #3
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 436
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 436
    Par défaut
    En C++/CLI, si ma mémoire est bonne, nous disposons du Pattern "try{...}finally{...}".

    Donc mettez l'appel à "Close" dans la clause finally.

    A moins que le Pattern using du C#2.0 et supérieur existe aussi en C++/CLI, au quel cas, cela serait encore mieux que finally.

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

Discussions similaires

  1. Lecture ecriture dans un fichier .mat avec C++
    Par WELCOMSMAIL dans le forum MATLAB
    Réponses: 1
    Dernier message: 10/09/2007, 11h29
  2. [IO] lecture ecriture dans un fichier
    Par grabriel dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 05/04/2007, 10h09
  3. probleme lecture ecriture dans des fichiers
    Par xman_genius dans le forum C
    Réponses: 9
    Dernier message: 16/01/2007, 19h50
  4. Lecture ecriture dans un fichier binaire
    Par laetous dans le forum C
    Réponses: 13
    Dernier message: 26/08/2006, 08h50
  5. ouverture/lecture/ecriture dans un fichier en mode binaire
    Par dirty_boy dans le forum Débuter
    Réponses: 2
    Dernier message: 15/03/2006, 08h38

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