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

Windows Forms Discussion :

[C#][debutant]erreur => object reference is required for a no


Sujet :

Windows Forms

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 164
    Points : 92
    Points
    92
    Par défaut [C#][debutant]erreur => object reference is required for a no
    Bonjour a tous,

    Je debute sous c# 1.1 !

    J'ai une p'tite application console qui ne fait que de prendre un path et si celui ci est un repertoire le programme liste les fichiers contenus dans ce repertoire !

    Le probleme qui est en partie resolu mais que je ne comprends pas est celui ci !

    J'ai declarer deux champs comme ceci :
    private string okUrl ="";
    private int i = 0;

    ils sont declares juste apres :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    // <summary>
    	/// Summary description for Class1.
    	/// </summary>
    	class Class1
    	{
    		private  string okUrl ="";
    		private  int i =0;
    si je compile mon application il me dit :
    an object reference is required for the non static ....

    et impossible donc de compiler !!!!
    par contre si je mets devant mes variables static cela tourne
    idem pour une methode !

    Donc ma question est celle ci ?
    Que veux dire ce message d'erreur et pourquoi si je mets static cela fonctionne t il ?

    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
     
     
    using System;
    using System.IO;
     
     
    namespace AccountingTools
    {
    	/// <summary>
    	/// Summary description for Class1.
    	/// </summary>
    	class Class1
    	{
    		private  string okUrl ="";
    		private  int i =0;
    		/// <summary>
    		/// The main entry point for the application.
    		/// </summary>
    		[STAThread]
    		static void Main(string[] args)
    		{
     
    			// TODO: Add code to start application here
    			Console.WriteLine(" Welcome to the Accounting Tools ");
    			Console.WriteLine("----------------------------------\n");
     
    			string folderPath = Console.ReadLine();
    			okUrl = splitBadCharacter(folderPath);
     
    			DirectoryInfo theFolder = new DirectoryInfo(okUrl);
    				//Si n existe pas
    			if(theFolder.Exists)
    			{
    				//Diplay the files in a sub directory
    				foreach(FileInfo nextFile in theFolder.GetFiles())
    				{
    					Console.WriteLine(nextFile.Name);
    					if((nextFile.Extension == ".txt")||(nextFile.Extension == ".doc"))
    					{
    						i++;
    					}
    				}	
    			}
     
    			//Affichage
    			Console.WriteLine("Fichier trouve " + i);
    			Console.ReadLine();
    		//End static
    		}
     
    		#region Method split bad character ================================================
     
    		/// <summary>
    		/// Split bad character
    		/// </summary>
    		/// <param name="folderPath">Name of folder</param>
    		/// <returns>return the correct url</returns>
    		private static string splitBadCharacter(string folderPath)
    		{
    			char[] badCharacter = {'"' ,',' ,'/'};   //Contains {" , /}
    			string [] stringArray = folderPath.Split(badCharacter);
    			foreach(string s in stringArray)
    			{
    				okUrl+=s;
    			}
    			return okUrl;
    		}
     
    		#endregion ========================================================================
     
    	}
    }

  2. #2
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    private static string splitBadCharacter(string folderPath)
    une méthode static ne peux accéder qu'au champs marqués comme static.

    Donc, met ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    private string splitBadCharacter(string folderPath)

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 164
    Points : 92
    Points
    92
    Par défaut
    Bonjour Thomas,

    Merci pour l'info; et ta rapidite sur ce forum !

    si je peux me permettre juste une p'tite question , comment
    faire pour que l'utilisateur
    qui va utiliser ce soft ne rentre que des valeurs entieres lors de la selection dans le menu !

    Je rappele que c'est une application console !

    voila ce que j'ai fait mais si je rentre une chaine de caractere il plante bien sur !!!!!!!!


    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
     
     
    string choix = Console.ReadLine();
    int chx = Convert.ToInt32(choix);
     
     
    				switch(chx)
    				{
    					case 1 :
    						Console.WriteLine("You push to "+chx);
    						break;
    					case 2 :
    						Console.WriteLine("You push to "+chx);
    						break;
    					case 3 :
    						Console.WriteLine("You push to "+chx);
    						break;
    					default :
    						Console.WriteLine("Invalide selection, please try again..");
    						break;
    				}
    Merci et bonne continuation

    Christophe

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    324
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 324
    Points : 343
    Points
    343
    Par défaut
    gere les exceptions generer lors de la fonction toInt32 ou alors previens les exception en faisant un mask de copie dans une nouvelle chaine :
    while(pas fin de ta chaine){
    if(ton caractere n'est pas un chiffre)
    ben tu l'enregistre pas dans ta nouvelle chaine
    sinon
    tu lenregistre
    on passe au caractère suivant
    et on reboucle le while}

    vous avez vu j'ai inventer un nouveau langage de prog
    1 || 1 = 1
    1 && 1 = 1
    1 * 1 = 1
    Bon après tout, peut-être que Van Damme avait raison :
    1 + 1 = 1 // harmonie parfaite

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

Discussions similaires

  1. Réponses: 8
    Dernier message: 13/06/2014, 21h56
  2. Réponses: 2
    Dernier message: 26/01/2012, 14h53
  3. Réponses: 2
    Dernier message: 31/01/2008, 11h58
  4. Error : An object reference is required
    Par CleeM dans le forum Windows Forms
    Réponses: 5
    Dernier message: 03/01/2008, 22h39
  5. Réponses: 1
    Dernier message: 26/07/2007, 17h29

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