Drole d'erreur d'execution

Résolu
iow4 Messages postés 302 Date d'inscription samedi 22 octobre 2005 Statut Membre Dernière intervention 2 novembre 2008 - 29 août 2006 à 15:56
iow4 Messages postés 302 Date d'inscription samedi 22 octobre 2005 Statut Membre Dernière intervention 2 novembre 2008 - 30 août 2006 à 09:25
Bonjour,

J'ai deux maskedtextbox qui sont parametré pour recevoir que 2 int32 ( 99 )
Je dois faire un programme qui parcourt chaque ligne d'un dictionnaire et qui doit regarder si la longueur de la ligne est au minimum la valeur du premier mask et au maximum celle du deuxieme
Seulement quand je compile j'ai une erreur d'execution :

<hr />
L'exception System.NullReferenceException n'a pas été gérée
  Message="La référence d'objet n'est pas définie à une instance d'un objet."
  Source="Bf"
  StackTrace:
       à bf.Form1.button3_Click(Object sender, EventArgs e) dans C:\Documents and Settings\thom\Mes documents\Visual Studio 2005\Projects\Bf\Bf\Form1.cs:ligne 177
       à System.Windows.Forms.Control.OnClick(EventArgs e)
       à System.Windows.Forms.Button.OnClick(EventArgs e)
       à System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
       à System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
       à System.Windows.Forms.Control.WndProc(Message& m)
       à System.Windows.Forms.ButtonBase.WndProc(Message& m)
       à System.Windows.Forms.Button.WndProc(Message& m)
       à System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
       à System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
       à System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
       à System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
       à System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(Int32 dwComponentID, Int32 reason, Int32 pvLoopData)
       à System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
       à System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
       à System.Windows.Forms.Application.Run(Form mainForm)
       à BruteForceMsn.Program.Main() dans C:\Documents and Settings\thom\Mes documents\Visual Studio 2005\Projects\Bf/Bf\Program.cs:ligne 17
       à System.AppDomain.nExecuteAssembly(Assembly assembly, String[] args)
       à System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
       à Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
       à System.Threading.ThreadHelper.ThreadStart_Context(Object state)
       à System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
       à System.Threading.ThreadHelper.ThreadStart()
<hr />

Voici mon code :

<hr />

line = sr.ReadLine();

if (line.Length <
Convert.ToInt32(maskedTextBox1.Text) || line.Length >
Convert.ToInt32(maskedTextBox2.Text)){

motok++;

}

<hr />

Merci pour votre aide

7 réponses

cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
29 août 2006 à 23:47
Ce n'est pas line.Lenght qui est null, mais line comme te l'explique fregolo. Ceci certainement dût au fait que tu es à la fin de ton fichier et que tu continues de lire => il retourne null.
De plus, on utilise plutôt un numericUpDown qu'une maskedTextBox si c'est juste pour limiter la saisie à des entiers.

<hr size="2" />VC# forever
3
fregolo52 Messages postés 1114 Date d'inscription mercredi 15 juin 2011 Statut Membre Dernière intervention 6 mai 2021 4
29 août 2006 à 17:04
Qui est null ? line ?

Le code que tu présentes doit être encapculé par une bouble (for ou while),  a mon avis c'est là qu'il y a un pb, tu doit lire une ligne de trop.
0
iow4 Messages postés 302 Date d'inscription samedi 22 octobre 2005 Statut Membre Dernière intervention 2 novembre 2008 4
29 août 2006 à 17:47
Non c'est pas ligne, la petit fleche de la boite d'exeption me montre la condition if.
Ca peut pas être la ligne car sans la condition tout marche du feu de dieu
0
fregolo52 Messages postés 1114 Date d'inscription mercredi 15 juin 2011 Statut Membre Dernière intervention 6 mai 2021 4
29 août 2006 à 18:04
Oui tu as un objet null dans ta condition, mais en mode debug tu dois pouvoir voir quel objet est null : line, maskedTextBox1 ou
maskedTextBox1)
Sinon je te conseille d'encapsule
r ton if dans un autre if :

line = sr.ReadLine();

if (line != null)
{

  if (line.Length <
Convert.ToInt32(maskedTextBox1.Text) || line.Length >
Convert.ToInt32(maskedTextBox2.Text))  {

    motok++;

  }

  }
}

Je ne pense pas que la convertion plante, sinon ça le dirait dans l'exception (je pense).
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
iow4 Messages postés 302 Date d'inscription samedi 22 octobre 2005 Statut Membre Dernière intervention 2 novembre 2008 4
29 août 2006 à 18:14
Le debugeur me montre maskedTextBox2.Text

mais pourtant il me dit que cette instruction contient "10" ce qui est tout à fait normal
0
iow4 Messages postés 302 Date d'inscription samedi 22 octobre 2005 Statut Membre Dernière intervention 2 novembre 2008 4
29 août 2006 à 18:51
tu as raison line.length est null comment ça se fait ?
0
iow4 Messages postés 302 Date d'inscription samedi 22 octobre 2005 Statut Membre Dernière intervention 2 novembre 2008 4
30 août 2006 à 09:25
Merci probleme resolu
0
Rejoignez-nous