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# Discussion :

Object reference not set to an instance of an object.


Sujet :

C#

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2012
    Messages : 10
    Points : 8
    Points
    8
    Par défaut Object reference not set to an instance of an object.
    Bonjour,

    Je suis en train de développer une application qui converti des fichiers XML en fichiers TXT en récupérant certaines informations. Au préalable je récupère la liste des fichiers présents dans un dossier. Mon test s'effectue avec 3 fichiers, la création des fichiers TXT se fait bien et le déplacement dans un dossier archive des fichiers XML également, seulement arrivé à la fin, l'application me met un message d'erreur qui est le suivant : Object reference not set to an instance of an object.

    Voici un morceau de mon code avec en rouge la ligne qui génère l'erreur :

    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
    34
    35
    36
    37
    38
    39
    40
    using System;
    using System.IO;
    using System.Linq;
    using System.Text;
    using System.Data.Odbc;
    
    namespace CONVERSIONXML
    {
    	class Program
    	{
    		public static void Main(string[] args)
    		{
    			// Déclaration des variables
    			DirectoryInfo fileListing = new DirectoryInfo(@"\\SRVXPERTCAPTURE\XpertCaptureFIL\Production\Release\EYNARD_ACHAT\");
    			string repBase = @"\\SRVXPERTCAPTURE\XpertCaptureFIL\Production\Release\EYNARD_ACHAT\";
    			string repDestination = @"\\karsrv-x3test\ZGED\ok\";
    			string repArchive = @"\\SRVXPERTCAPTURE\XpertCaptureFIL\Production\Release\EYNARD_ACHAT\archive\";
    			string[] LISTEFIC = new string[50];
    			string[] LIGNESFIC = new string[50];
    			int i = 0;
    			
    			// Boucle sur le répertoire et ajout des noms de fichiers dans un tableau
    			foreach (FileInfo FIC in fileListing.GetFiles())
    			{
    				LISTEFIC[i] = (fileListing.ToString() + FIC.Name);
    				i++;
    			}
    			
    			foreach (string NOMFIC in LISTEFIC)
    			{
    				// Ouverture du fichier XML
    				StringBuilder sb = new StringBuilder();
    				Array.Clear(LIGNESFIC,0,30);
    				sb.Append(NOMFIC);
    				StreamWriter sw = new StreamWriter(repDestination + NOMFIC.Substring(66) + "import");
    				LIGNESFIC = System.IO.File.ReadAllLines(sb.ToString());
    			}
    		}
    	}
    }
    Merci par avance de vos réponses.

  2. #2
    Membre actif
    Homme Profil pro
    Developpeur
    Inscrit en
    Février 2013
    Messages
    180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Developpeur

    Informations forums :
    Inscription : Février 2013
    Messages : 180
    Points : 271
    Points
    271
    Par défaut
    on ne fait pas de la lecture et de l'écriture en même temps
    1 - on lit un fichier qu'on sauvegarde dans une variable
    2 - on modifie notre variable au besoin
    3 - on écrite notre variable
    4 - on détruit tout

    ensuite c'est normale que ça plante sort la ligne en rouge et met la au dessus du foreach
    StreamWriter est un objet qui va te donné accès en écriture à un fichier donné (tu peut lui donné différent paramètre, pour ça tu peut aller sur la msdn pour voir ces différent constructeur)
    et tu vas pouvoir l'utiliser pour ensuite faire t'as boucle et écrire ligne à ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
                string fileName = "test.txt";
                string textToAdd = "Example text in file";
     
                using (StreamWriter writer = new StreamWriter(fileName))
                {
                    writer.Write(textToAdd);
                }

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2012
    Messages : 10
    Points : 8
    Points
    8
    Par défaut
    Merci pour ta réponse, cependant je n'ai pas tout compris. Comment je peux sortir mon StreamWriter de la boucle ? Sachant que j'ai à chaque fois besoin d'en déclarer un lorsque j'ai un fichier à traiter, ça peut aller de 0 à XXXX.

  4. #4
    Membre actif
    Homme Profil pro
    Developpeur
    Inscrit en
    Février 2013
    Messages
    180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Developpeur

    Informations forums :
    Inscription : Février 2013
    Messages : 180
    Points : 271
    Points
    271
    Par défaut
    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
     
    StreamWriter sw = null;
                StringBuilder sb = null;
                foreach (string NOMFIC in LISTEFIC)
                {
                    // Ouverture du fichier XML
                    sb = new StringBuilder();
                    Array.Clear(LIGNESFIC, 0, 30);
                    sb.Append(NOMFIC);
                    using (sw = new StreamWriter(repDestination + NOMFIC.Substring(66) + "import"))
                    {
                        // on peux écrire dans un fichier
                        // sw.WriteLine();
                    }
                    LIGNESFIC = File.ReadAllLines(sb.ToString());
                }
    Attention tu as une variable sw que tu n'utilise jamais
    et faire attention que le fichier que tu essaie d'ouvrir éxiste

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2012
    Messages : 10
    Points : 8
    Points
    8
    Par défaut
    Merci beaucoup je comprends mieux l'utilisation du StringWriter !

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 01/04/2008, 18h36
  2. new : Object reference not set to an instance of an object
    Par zulad dans le forum Windows Forms
    Réponses: 3
    Dernier message: 19/06/2007, 20h35
  3. Object reference not set to an instance of an object
    Par DjRusty dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 24/03/2007, 07h26
  4. Réponses: 1
    Dernier message: 28/12/2006, 11h05
  5. Réponses: 1
    Dernier message: 20/04/2006, 12h09

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