Applicazione VB.net 2005 su win7

mercoledì 23 giugno 2010 - 15.10

andreaalleg@libero.i Profilo | Newbie

salve a tutti, ho una applicazione scritta in vb2005 che funz perfett su XP ma su win 7 ha dei problemi, sembrerebbe con delle sub overridable...
nelle clessi form della mia applicazione ho aggiunto un paio di righe alla sub New() (se non ricordo male è la sub che permette di istanziare una classe a runtime), posto una delle sub in questione:

>classe ereditata<
Overridable Sub Modifica()
...codice...
End Sub

>classe che va in errore<
Public Overrides Sub Modifica()
...codice...
End Sub

in pratica quando l'eseguibile passa per questa funzione ereditata va in errore... SOLO su win7...

nico839 Profilo | Senior Member

ma in questa sub modifica che fa?che errore ti da?
Ciao.
Nicolas

andreaalleg@libero.i Profilo | Newbie

l'errore che esce è questo:
System.NullReferenceException: Variabile oggetto o variabile del blocco With non impostata.
in Microsoft.VisualBasic.CompilerServices.Symbols.Container..ctor(Object Instance)
in Microsoft.VisualBasic.CompilerServices.NewLateBinding.LateCall(Object Instance, Type Type, String MemberName, Object[] Arguments, String[] ArgumentNames, Type[] TypeArguments, Boolean[] CopyBack, Boolean IgnoreReturn)
in Base.clsBase.ApriFormMDI(String NomeForm, Boolean Modal)
in Doc.BrwDocumenti.Modifica()
in Base.FormBrowse.DGF_DoubleClick(Object sender, EventArgs e)
in System.Windows.Forms.Control.OnDoubleClick(EventArgs e)
in C1.Win.C1FlexGrid.C1FlexGridBase.OnDoubleClick(EventArgs e)
in System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
in System.Windows.Forms.Control.WndProc(Message& m)
in C1.Win.C1FlexGrid.Util.BaseControls.ScrollableControl.WndProc(Message& m)
in System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
in System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
in System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr l

... facendo un pò di prove di debug (mettendo dei msgbox nel codice) ho isolato il problema identificando quelle sub... ma la cosa strana è che da err solo su w7 !!!

nico839 Profilo | Senior Member

prova a postare il codice,magari diventa più chiaro....così sembra che non gli piaccia una variabile o un oggetto...
a me è capitato da una versione di xp ad un'altra o da xp a vista e quello che non gli piaceva era magari un variabile.tostring.
Ciao.
Nicolas

andreaalleg@libero.i Profilo | Newbie

>classe ereditata>
Overridable Sub Modifica()
Try
Dim editForm As Object = ObjBase.ApriFormMDI(sEditForm)
editForm.txtID.value = CodSel
editForm.CaricaDati()
Catch x As Exception
ObjBase.StatusBarMessage(False, Me.Name & " - " & x.Message)
End Try
End Sub

>classe errore<
Public Overrides Sub Modifica()
Try
If Year(DGF.GetData(Row, "DataDoc")) = ObjBase.Anno Then
Dim editForm = ObjBase.ApriFormMDI(Me.EditForm)
editForm.TipoDoc = DGF.GetData(Row, "TipoDoc")
editForm.txtTipoDoc.value = DGF.GetData(Row, "TipoDoc")
editForm.txtID.value = CodSel
editForm.caricatesta()
Else
MsgBox("Attenzione la data documento appartiene ad un Anno diverso da quello corrente", MsgBoxStyle.Information, "Modifica Documento")
End If
Catch x As Exception
ObjBase.StatusBarMessage(False, Me.Name & " - " & x.Message)
End Try
End Sub

ti assicuro che sia in debug che a runtime (eseguibile) su XP non ci sono problemi, solo su WIN7!!!

nico839 Profilo | Senior Member


>ti assicuro che sia in debug che a runtime (eseguibile) su XP
>non ci sono problemi, solo su WIN7!!!
>

non mi è difficile crederlo, ti ripeto:è capitato anche a me più e più volte....


hai mica provato a verificare in quale riga esattamente arriva l'eccezione?
Ciao.
Nicolas

andreaalleg@libero.i Profilo | Newbie

non riesco ad eseguire il debug, ho iserito diversi try.. catch ma funzionano a cascata e mi sembra di capire che se metto più try con msgbox in cascata vedo solo il messaggio del try più esterno...

cmq l'errore parte da quelle sub, in effetti l'err esce anche cliccando nuovo quindi in questa sub
Overridable Sub Nuovo()
Try
Dim editForm As Object = ObjBase.ApriFormMDI(sEditForm)
editForm.Nuovo()
Catch x As Exception
ObjBase.StatusBarMessage(False, Me.Name & " - " & x.Message)
End Try

End Sub
questa non viene ereditata e non fa altro che aprire una classe form da una dll e richiamare la sub NUOVO
tutto ciò naturalmente su xp funziona...
ora provo a togliere qualche try ed inoltrarmi in un debug manuale...

se hai qualche buana idea... ben venga :)

nico839 Profilo | Senior Member

prova con dei messagebox step by step :-)
secondo me è una variabile o un oggetto o qualcosa che da qualche parte ha valore null....poi magari mi sbaglio....sicuro che il problema non possa essere nella dll?
Ciao.
Nicolas

andreaalleg@libero.i Profilo | Newbie

ma se su XP non mi da errore... non può essere un problema di codice :(

nico839 Profilo | Senior Member

hai provato a lanciare la tua applicazione in modalità compatibile?....cmq il controllo su dove da errore precisamente lo cercherei,magari è una cosa stupida che a xp piace a 7 no.ti ripeto a me è capitato più di una volta che la stessa dll installata su più pc identici con lo stesso sistema operativo in alcuni andava in altri no, e in quelli che non andava il problema era il comando
miaVariabileStringa.toString

e cambiato in

miaVariabileStringa.trim

funzionava anche sugli altri....quindi magari c'è una inizializzazione di variabilo o oggetto che non gli piace...
Ciao.
Nicolas
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5