Newsgroup: it.comp.lang.visual-basic
Titolo: System.InvalidCastException

Salve,
 
ottengo il seguente messaggio non appena clicco sul 'run' della IDE (VB 
.NET 2010 express) :
 
*A first chance exception of type 'System.InvalidCastException' occurred 
in Microsoft.VisualBasic.dll*
 
Prima ancora di cliccare su qalsiasi button per fare qualcosa.
 
Dopo aver letto in memoria questo array : Dim pazienti(5000,6) as String
 
con binaryReader, devo comparare tra loro due date per trovare il TimeSpan.
 
Il loop termina uscendo con indice = 5000 (cioè ha finito il loop)
però senza far niente.
 
Se le date invece che leggerle dal file, le metto in due textbox, (così 
per test) allora la conversione con Cdate funziona benissimo e ottengo 
quello che voglio.
 
Il codice :
---------------------------------------------------------------------
For i = 0 To 4999
             Try
 
                 sdata_nascita = pazienti(i, 4)
                 sdata_privisita = pazienti(i, 2)
 
 
                 ' calcola età alla prima visita
 
 
                 If Not IsDate(sdata_nascita) Then GoTo prossimo
                 If Not IsDate(sdata_privisita) Then GoTo prossimo
                 ddata_nascita = CDate(sdata_nascita)
 
                 ddata_privisita = CDate(sdata_privisita)
 
                 ddiff_eta = ddata_privisita.Subtract(ddata_nascita)
                 sindiff = ddiff_eta.Days / 365
                 indiff = Int(sindiff)
 
                 pazienti(indice_paziente, 5) = Str(indiff)  ' età alla 
prima visita
                 LOG.AppendText(" " & Str(i) & " ")
 
             Catch ex As Exception
                 LOG.AppendText("*** error at " & i.ToString & LF)
                 LOG.AppendText(ex.ToString & LF)
                 Exit For
             End Try
prossimo:
 
         Next
         dum = i.tostring
         LOG.AppendText("esce da loop con indice = " & dum & LF)
 
     End Sub
'-------------------------------------------------------------------------
 
Grazie per qualsiasi feedback.
 
 
John.
 

 
 
John non ti offendere ma quel codice è un pugno nell'occhio :O 
Che ci fai ancora con quei GOTO ? Poi il ciclo for mischiato nel try..catch...
 
Ristruttura il codice in modo decoroso innanzitutto.
Poi fai una semplice cosa: in modalità debug controlla il valore che si
trova in sdata_nascita e sdata_privisita...
 
Inoltre dovresti dimenticarti del namespace VisualBasic :O
 
Riprova e controlla....
 
PS: MIO DIOOOOOOO :D
 

 Ristruttura il codice in modo decoroso innanzitutto.
 
Non penso che faccia tanta differenza il codice (anche se è un 
obbrobrio, ma è provvisorio per fare un astatistiochetta, poi da buttar 
via). Lo stesso codice, ma prendendo il sdata tal textbox mi funziona.
E poi, perchè un simile messaggio si vede subito dopo aver schiacciato 
il 'quadratino' del 'run' ? senza nemmeno aver cominciato  a far 
qualcosa ??



 
Scusa, questa non l'ho capita. Cosa dovrei fare ?
 

 
 
Perchè l'avrai messo in un evento di inizializzazione. Vedi in debug cosa ci
trova in quelle variabili e facci sapere :)
 


Detto in altri termini: scrivere in 
VB.NET
 invece che scrivere in "simil-VB6 trasportato in .NET".... 'IsDate', 'Str', 'Int' ecc.. sono tutti costrutti vecchi che pescano dall'assembly di compatibilità Microsoft.VisualBasic, ma di cui esistono le versioni equivalenti native del Framework.
 
Quindi ti suggeriva intanto di scrivere il tutto in maniera consona, e magari anche di postare nei tuoi esempi *la dichiarazione delle variabili*, perchè hai voglia a trovare un problema di cast se non conosciamo il tipo di nessuna delle variabili che sono in quel codice


OK. Adesso ho capito. grazie.
 
E' vero, talvolta uso ancora STR() invece che .toString, etc. Ma dato 
che sono valide tutte e due, non pensavo ci fossero particolari problemi 
nell'usare una o l'altra.  Vuol dire che userò quelle più 'moderne' del 
VB .NET.
 
per quanto riguarda le dichiarazioni, eccole (quelle locali) :
 
  	Dim sdata_nascita As String = " "
         Dim sdata_privisita As String = " "
         Dim ddata_nascita As Date = "01.01.1950"
         Dim ddata_privisita As Date = "01.01.1960"
         Dim ddiff_eta As System.TimeSpan = TimeSpan.FromDays(1)
         Dim sindiff As Single = 0
         Dim indiff As Integer = 0
 
	pazienti è definito Public in un modulo a parte :
 
	public pazienti(5000,6) as string
 
 

        Dim ddata_privisita As Date = "01.01.1960"
...
Immagino che l'opzione "Option Strict" sia in Off, dato che quelle che vedo 
non sono date, ma stringhe.
Per il resto, non ho capito quando e dove ti viene alzata l'eccezione. Dici 
che appena premi il tasto Run ti viene alzata l'eccezione, ma poi ci mostri 
quel pezzetto di codice, ed a quanto pare non sai quando viene eseguito.
Qualche altra indicazione?
 


Consolati : il mistero è ancora più fitto.
Stamattina ho acceso il computer e funziona TUTTO come dovrebbe !!
Eppure non ho fatto niente di niente ieri sera. (anche perchè non sapevo 
dove mettere le mani).
 
E' possibile che dopo aver lavorato tutto il giorno, aver creato 
programmi, moduli nuovi etc. qualche area 'trash' si sia riempita ed 
abbia causato danni, e poi, con lo spegnere il computer, e il 
ricaricamento nuovo del sistema si sia tutta liberata ??
 
Perchè io non me lo so spiegare in altri modi questo fatto.
 
Dopodichè ho anche notato che alcune cose erano state dichiarate due 
volte : in un modulo a parte as 'public' e nel Form1.
 
Ora le ho tolte.
 
Potrebbe essere quello il problema ??
 
Ora mi funziona tutto perfettamente.
 
Bah...forse Nostra Signora del VB .NET ha ascoltato le mie preghiere 
durante la notte !!!!
 
 

 vedo non sono date, ma stringhe.
 
quelle date sono 'a cacchio' per test.
 
Infatti i CDate(ddata_nascita) e Cdate(ddata_privisita) funzionano 
ottimamente (ho la region 'DE').

 la notte !!!!
 
....se esistesse sarebbe da mò che ti avrebbe tolto la sua 
benedizione!!!
Nessuna area "trash" (che cacchio vuol dire lo sai solo tu) niente di 
niente esiste di simile in alcun linguaggio di programmazione...nemmeno 
in assembler!
 
First time exception interviene in debugger quando viene sollevata per 
la prima volta una eccezione (nel tuo caso sembra un cast sbagliato) . 
Il first time significa che il debugger ha trovato l'eccezione....la 
"prima cosa che fa" ...first time....IL SEGUITO dipende da come è 
configurato il debugger se entra in errore o te lo notifica solamente.
 
Se il tuo codice gestisce le eccezioni probabilmente tutto continua 
senza problemi e il messaggio ti avverte solamente che: "è successo 
qualcosa che però abbiamo ignorato perchè mi hai detto di farlo!"
 
Perchè il giorno dopo non ti da errore?
Ad esempio perchè il giorno prima provavi con un file vuoto e stamani è 
pieno e quindi non hai cast con oggetti nulli....
oppure perchè durante la tua programmazione hai messo finalmente un 
cast corretto....
e così via!
 
 
http://blogs.msdn.com/b/davidklinems/archive/2005/07/12/438061.aspx
 
http://stackoverflow.com/questions/2020374/a-first-chance-exception
 
 
 
QUINDI nessuno ce l'ha con te...men che meno un inanimato pezzo di 
software...sei solo tu che come sempre non hai voglia di approfondire
 
...e mo ricominciamo con la solita flammata??? Stavolta no dai!
T'ho dato la risposta....ora arrangiati!
 
-- 
----- Italliaaaaa 3227! -----
Io sono Attila:
A come atrocità,
doppia T come terremoto e tragedia,
I come ira di dio,
L come laco ti sangue
e A come adesso vengo e ti sfascio le corna!
(Diego Abatantuono "Attila Flagello di Dio")
 
 


 
 
Non so perchè qualsiasi cosa che io scrivo tu la vedi sempre come una 
'provocazione' per un flame.
 
Io non so cosa è successo. So solo che ieri sera sono andato a dormire 
tutto incazzato perchè avevo un tipo di errore di cui non riuscivo a 
capirne la causa.
E stamattina, acceso il computer, ho fatto semplicemente il 'run' dello 
STESSO codice, ed ha funzionato,  e non ho nemmeno avuto il messaggio 
che è l'oggetto di qusto thread.
 
Per me è un mistero. E non è la prima volta che mi succede (mi riferisco 
solo al VB .NET).
 
Vedi tu.  Per me adesso va bene così e posso contiuare col mio lavoro.
 
A me basta questo.
 
 

 al VB .NET).
zac
Ti succede solo in net perchè vuoi usare cose che non usi in altri 
linguaggi....try catch ce l'hai anche in php....
usassi java avresti i soliti problemi ....
 
In più....
non voler capire come mai un MIO(tuo nello specifico) programma va in 
errore...è tutto fuorchè professionale!
Se gestisci solo appuntamenti...male che vada prenderai un vaffanculo 
da un paziente che ha un appuntamento sovrapposto ad un altro...o 
daal'operatore che vede impallarsi il sistema....
se fosse uno scalo merci...o un sistema di distribuzione solventi o 
ossigeno...eh beh!
 
Vedi tu!!!...IMHO meriterebbe approfondire!
 
-- 
----- Italliaaaaa 3227! -----
Guerrieriii....giochiamo a fare la guerraaa!.... 
Guerrieriii....giochiamo a fare la guerraaa!.... 
Guerrieriii....giochiamo a fare la guerraaa!....
 
I guerrieri della notte (1987)
 
 


 
Infatti ho approfondito : tutte le risposte che ricevo qui mi insegnano 
qualcosa.
 
In questo particolare caso, tutte queste informazioni ricevute mi 
bastano per continuare tranquillamente il lavoro e non pensarci più fino 
alla prossima volta.
 
Anche perchè per poter 'approfondire' veramente, la cosa deve essere 
riproducibile.
 
Un evento che scompare semplicemente perchè ci hai dormito sopra, non 
offre nessuna base per un approfondimento scientifico.

 Am 06.03.2012 10:13, schrieb Wodka40°:
zac
 
Sbagli....il perchè una cellula sia morta in una cultura...dovrebbe 
spingerti ad approfondire!...parecchie scoperte son nate 
così!...comunque!...ok...è sempre frustrante ragionare con te (da un 
punto di vista intelletuale eh!...)


ottimamente (ho la region 'DE').
...
Intendevo dire un'altra cosa :-)
Se effettivamente il codice e' quello che hai postato, cioe':
Dim ddata_nascita As Date = "01.01.1950"
 
il tuo "01.01.1950" non e' una data (per VB) ma e' una stringa che noi umani 
usiamo per rappresentare una data... non e' la stessa cosa.
L'opzione "Option Strict" impostata ad ON, ti previene una marea di 
problemi, anche se ti porta a dover effettuare dei cast espliciti che a 
volte sono un po' noiosi; da quello che vedo, non hai l'opzione impostata ad 
ON, altrimenti ti avrebbe segnalato l'errore e non avrebbe neanche compilato 
:-)
 


 
Ti lascio alle tue convinzioni. Io ribadisco che un fenomeno si puo' 
studiare solo se si riproduce con un certa logica e abbastanza 
frequentemente e se sai almeno dove cominciare.
 
Altrimenti è come investigare le apparizioni della Madonna a Medjugorie.
 
 
 
 
 

 Am 06.03.2012 10:13, schrieb Wodka40°:
Però sotto sotto ti voglio  bene...lo spirito di corpo fra 
programmatori io lo sento!
 
 
ed allora io ci riprovo...PROVIAMO A RIFLETTERE
 
Progetto FW 3.5
un form ed un button
il codice
 
Public Class Form1
    Private Archivio(3, 2) As String
 
    Private Sub Form1_Load(sender As System.Object, e As 
System.EventArgs) Handles MyBase.Load
        'carico archivio
        Archivio(0, 0) = "PIPPO"
        Archivio(0, 1) = "10/1/1960"
        Archivio(0, 2) = "12/2/2012"
 
        Archivio(1, 0) = "PLUTO"
        Archivio(1, 1) = "14/4/1950"
        Archivio(1, 2) = "1/2/2012"
 
        Archivio(2, 0) = "PAPERINO"
        Archivio(2, 1) = "10/7/1982"
        Archivio(2, 2) = "22/2/2012"
 
        Archivio(3, 0) = "PAPERONE"
        Archivio(3, 1) = "10/1/1998"
        Archivio(3, 2) = "2/2/2012"
 
 
    End Sub
 
 
 
    Private Sub Button1_Click(sender As System.Object, e As 
System.EventArgs) Handles Button1.Click
        Dim dnascita As Date
        Dim dvisita As Date
        Dim etaPaziente As Long
        For n As Integer = 0 To Archivio.GetLength(0) - 1
            Try
                If (IsDate(Archivio(n, 1))) And (IsDate(Archivio(n, 
2))) Then
                    'qui puoi comparare
                    dnascita = CType(Archivio(n, 1), Date)
                    dvisita = CType(Archivio(n, 2), Date)
                    'meglio esser sicuri che l'operatore non ha fatto 
casino!
                    If dnascita < dvisita Then
                        'almeno un giorno di vita devi 
averlo...altrimenti <=
                        'calcolo gli anni
                        etaPaziente = dvisita.Year - dnascita.Year
                        'controllo se ha da fare il compleanno
                        If New Date(dvisita.Year, dnascita.Month, 
dnascita.Day) > dvisita Then
                            'L'ha da fare ...sottraggo uno
                            etaPaziente -= 1
                        End If
                        'ECCOCI
                        Debug.Print("Il paziente " + Archivio(n, 0) + " 
nato il " + Archivio(n, 1) + " alla data della prima visita " + 
Archivio(n, 2) + " aveva " + etaPaziente + " anni.")
                    End If
                End If
 
            Catch ex As Exception
                MessageBox.Show(ex.Message)
                Stop 'utile in debug per vedere nella finestra 
variabili che succede
            End Try
        Next
 
    End Sub
End Class
 
LO LANCI...clicchi sul pulsante
 
BOOOOOOOOOOOMMMMM
 
Eccezione first-chance di tipo 'System.InvalidCastException' in 
Microsoft.VisualBasic.dll
 
però siccome son buonino (anche se non sembra) il messagebox ti da 
indizi
 
 
DOVE SBAGLIO!????????
 
QUESTO è scientificamente ripetibile
 
tra 5 minuti se non ci arrivi ti do la soluzione
 
....HINT....
se sei al perso togli lo stracazzo di try catch (lo sapevi che vanno 
usati con parsimonia in qualsiasi linguaggio???? ...anche in php)...e 
guarda dove è l'errore!!!!
 
-- 
----- Italliaaaaa 3227! -----
Ci sono cattivi esploratori che pensano che non ci siano terre dove 
approdare solo perché non riescono a vedere altro che mare attorno a 
sé.
(Francesco Bacone)
 
 


Leggi sotto...fenomeno ripetibile!....
:)
 
-- 
----- Italliaaaaa 3227! -----
Era Cecco, il figlio del fornaio; era un orribile butterato napoletano, 
col culo molto basso ed un alito agghiacciante tipo fogna di Calcutta.
(Fantozzi)
 
 


 
OK. Ho capito. In effetti, a me bastava che il 'formato' della stringa 
fosse accettato come data. Il 'valore' della data era in questo caso 
insignificante.
Comunque ora so dell'esistenza di questa opzione e andrò a guardarmela, 
in caso mi dovesse essere utile in futuro.


 
Azz.... un compito in classe, così, improvvisamente di prima mattina, di 
martedì...
 
OK Prof. dammi un po' di tempo e svolgo il compito.
 

Il 06/03/2012, vbMizio ha detto :

Imho Mizio Strict On l'ho usato pochissime volte!
Però uso anche pochissimi try catch e soltanto dopo aver fatto il debug 
il più possibile accurato!
L'errore di john è di aver fatto un copia incolla 
(probabilmente)...bastava che "copiaincollasse" un codice senza try 
catch e si rendeva conto da se dell'errore!
 
Io lo ripeto
 
TRY
 
CATCH
 
Accade un errore nel try
il CATCH se lo piglia....e ti segnala che la presa in carico del codice 
la "prima volta" c'è stata!
Se l'errore è ingestibile si ferma ...altrimenti va avanti...PERO' imho 
giustamente...te lo dice!
 
Un codice
 
try
Catch ex As Exception
è una bomba a mano in pugno ad un talebano!...passa quasi tutto e non 
controlli praticamente nulla!...utile solo a fini didattici (e neanche 
tanto alti) per far funzionare un esempio!
Prova a metterla in una gestione appuntamenti e vedrai quanti casini 
avrà il cliente!
 
 
Semre e soltanto imho!...ovvio!
 
-- 
----- Italliaaaaa 3227! -----
Quando vedi la tua verità fiorire sulle labbra del tuo nemico, devi 
gioire, perché questo è il segno della vittoria.
(Giorgio Almirante)
 
 


 
Allora. costruito un progetto 'wodka' con un button e un RichtextBox che 
io chiamo sempre 'LOG'.
 
- al semplice click sul 'run'  NON DA' NESSUN MESSAGGIO del tipo 
SysteInvalidCastException. Niente di niente. Nisba.
 
- mi dà in effetti un errore, ma è il messaggio "Invalid conversion od 
String "Il paziente PIPPO nato il 10(1/1 in Type Double"
 
- Il messaggio di cui al Debug.Print  non appare.
 
 
E adesso ???


dimenticavo : il messaggio viene come Messagebox.

più possibile accurato!
...
Beh, in debug gli errori devono essere evidenziati, quindi un Try-Catch non 
e' molto indicato.
 

 dimenticavo : il messaggio viene come Messagebox.
 
è come è configurato il tuo ambiente di sviluppo!...nel mio mi da 
l'errore che ti ho postato!
MA
va tutto bene solo che ancora non ragioni....proviamo insieme
 
TRY CATCH
che fà?
TRAPPA un errore...termine che deriva dall'assembler e dal C dove 
esisteva l'istruzione trap per generare un salto nel processore.
 
Ora....io ho il flusso del mio programma...DA A -> a B passando 
attraverso varie istruzioni.
 
io adesso modifico il "flusso"
 
A->X(guardiano) ->B XX(postazione del guardiano)
il guardiano..."guarda" dalla sua postazione che è FUORI dal flusso del 
programma...se nota qualcosa di ANOMALO....SOSPENDE l'esecuzione del 
flusso e si prende cura dell'anomalia!
 
Capisci bene che se il guardiano SA' cosa toccare e cosa 
aggiustare...questa è una risorsa! Se non sa che toccare questa è una 
sciagura perchè vedrai un errore generico...o un errore assolutamente 
non chiarificante delle cause scatenanti!
 
Try
 
Catch ex as Exception
è proprio un guardiano GENERICO....il più generico possibile!
INTERVIENE SEMPRE e non blocca nulla che sia meno di una fusione del 
pc!
 
Uno un po più specializzato ad esempio potrebbe essere
Catch ex As InvalidCastException
QUESTO guardiano specializzato interviene SOLTANTO se l'errore è un 
errore di cast fra variabili!... Il resto lo lascia fallire nel punto 
in cui deve fallire!
 
 
 
Il caso tuo
Try
 
Catch ex as Exception
dopo il try qualcosa fallisce....Catch se lo prende in carico...a 
seconda di come è settato il debugger ti dice che l'ha preso in carico 
"first time exception"...solo che non va in bomba perchè il resto 
riesce a gestirlo....va avanti!
Va avanti alla cazzo di cane...in quale linea va in bomba? che errore 
è? BOH! sai solo che è tra TRY e CATCH ma non sai altro!
Allora io ti ho un po aiutato
 
            Catch ex As Exception
                MessageBox.Show(ex.Message)
EX è una variabile che riporta l'oggetto exception (la puoi chiamare 
come vuoi ex è una convenzione...se ti garba geronimo va bene lo 
stesso)
una delle propretà
ti dice che errore è!
MessageBox.Show(ex.Message) ti stampa a video l'errore...ti dice che 
errore è intervenuto...non ti dice dove!
è possibile spippolando...sapere la linea...ma esula dal post!
 
 
quindi tu sai con first time che c'è un errore....ma se, come in questo 
caso, non te lo segnalasse (a te)...il message box ti dice che c'è un 
errore!
 
Il tuo codice originario è pericoloso
se ci fosse stato un cast sbagliato IN TUTTO
vedevi NESSUN ERRORE....e NESSUN APPUNTAMENTO....ohibò che schifo, 
avresti detto ,che fa il 
vb.net
!
MA FA COSI' perchè gli hai detto di farlo!
 
MORALE
 
Try catch non metterlo in debug....incasina solo il 
programmatore...mettilo solo a protezione di possibili casini...e CERCA 
di emttere un guardiano dell'eccezione IL PIU' SPECIALIZZATO possibile!
....per non perderci una mattina in un debug stupido!
 
 
togli il try catch e guarda quanto stupido è l'errore!!!!
:)
ancora non te lo dico!
 
-- 
----- Italliaaaaa 3227! -----
Come ti senti oggi???
 
Giano Geminus Bifrons Bepop Flowers
http://youtu.be/Wk_gyLo0i-c
 
minuto 3:14
 
(Un uomo un mito: Luciano Lupoletti)
 
 

 ancora non te lo dico!
alle 12.00 te lo dico!
ma ci arrivi da solo senza try catch!!!!!!
 
-- 
----- Italliaaaaa 3227! -----
Grembiule nero e fiocco azzurro: per un bambino milanista il primo 
giorno di scuola è un trauma.
(Diego Abatantuono)
 
 


 
Spiegamelo meglio, please,  perchè io lavoro 'esclusivamente' in Debug 
mode. il 'Release' non lo uso mai (non saprei nemmeno come cambiarlo : 
non lo vedo nel project properties)
 
Il try Catch mi è sempre stato utile perchè almeno 'vedevo' che qualcosa 
non andava, e facevo il print dell'exception. Intanto almeno è un aiuto.
Posso anche toglierlo, ma poi in debugging mode (cioé all'inizio, quando 
ci sono una caterva di errori stupidi facilmente correggibili)
sono obbligato a mettere un sacco di print (LOG.Appendtext nel mio caso).
 


Scusa...ma gli errori servono proprio a debuggare il codice!
Un codice come il mio...non ti farebbe vedere nessun errore!
cliccki e va a diritto
nessun appuntamento...nessun errore!
Come lo debugghi???? UN BAGNO DI SANGUE!
 
Mille errori? rispondo anche a mizio!
BENE...li risolvo!...ci mancherebbe altro!
 
non so come seguire un flusso?
Breakpoint e F8 e finestra delle variabili
 
cavolo ma un try catch no!
mi serve solo come risorsa...non come il prezzemola per far finta che 
il pesce sia fresco!
 
 
Ma hai provato a toglierlo?
vedi subito dov'è l'errore!!!!
 
-- 
----- Italliaaaaa 3227! -----
Pasquà...Pasquale Zagaria...u'fighh'Riccard
[Vieni avanti cretino (1982)
c'ho pure il video! 
http://www.martek.it/public/dblog/banfi1.swf
 ]
 
 

>
Soluzione
è un cast che deve essere impostato a string
se hai tolto il try catch sai dov'è
deve essere .tostring
 
se cmq vuoi tenere il catch....ma hai visto che in debug è rischioso ed 
inutile......
 
almeno modificalo così
 
            Catch ex As Exception
                Dim testoErr As String = ""
                testoErr = ex.Message
                Dim CS As System.Diagnostics.StackTrace = New 
System.Diagnostics.StackTrace(ex, True)
                testoErr += vbCrLf + CS.ToString
 
                MessageBox.Show(testoErr)
                Stop 'utile in debug per vedere nella finestra 
variabili che succede
 
almeno ti dice in che linea suppergiù fallisce!!!....ti dice il primo 
errore che trova....poi se ce ne sono altri....!!!!
da retta ...il try catch solo a debug "sgrossato"!!! ....e campi più 
tranquillo! (in php uguale...son stato una mattinata per un cast da 
stringa a int...anche in php...pensa un po!!)
 
-- 
----- Italliaaaaa 3227! -----


 Wodka40° scriveva e il server registrava il messaggio 458501
 
Soluzione completa
      Debug.Print("Il paziente " + Archivio(n, 0) + " nato il " + 
Archivio(n, 1) + " alla data della prima visita " + Archivio(n, 2) + " 
aveva " + etaPaziente.ToString + " anni.")
 
 
etaPaziente.ToString   eccolo qui!
 
-- 
----- Italliaaaaa 3227! -----
Ti prego, ti prego, non ci uccidere. Ti prego baby, lo sai che ti amo. 
Non avrei mai voluto lasciarti, non è stata colpa mia. Davvero, sono 
sincero. Quel giorno finì la benzina. Si bucò un pneumatico. Non avevo 
i soldi per il taxi! Il mio smoking non era arrivato in tempo dalla 
tintoria! Era venuto a trovarmi da lontano un amico che non vedevo da 
anni! Qualcuno mi rubò la macchina! Ci fu un terremoto! Una tremenda 
inondazione! Un'invasione di cavallette!
John Belushi [da "Blues Brothers"]
 
 


 
perchè dovrebbe dare errore un qualsiasi valore, se definito, 
convertendo a toString ?
E poi il messaggio (MsgBox) col catch dava errore in convrsione di 
string a double. Bah..
 
Ho notato anche un'altra cosa : Archivio è dimentionato (3,2)
 
Quindi in teoria l'indice dovrebbe andare solo da 0 a 2, se non vado errato.
Tu invece inizializzi anche un Archivio(3,*)

 Am 06.03.2012 12:31, schrieb Wodka40°:
 
 
Debug print stampa su uno stream testuale....
quindi si aspetta una sequenza di caratteri
etaPaziente è un long
quindi vorresti far entrare un bullone cilindrico in un foro 
quadrato...visto che siamo dalle parti di un linguaggio FORTEMENTE 
TIPIZZATO...prova a fare alcune conversioni...le sbaglia...e te lo 
segnala!STRICT ON non proverebbe a far nulla e te lo segnalerebbe 
SUBITO..!Ovviamente il try catch ti ha "anestetizzato il sistema" e 
nascosto il problema (che rimane)!
 
etapaziente.tostring scatena una procedura interna all'oggetto che 
resttuisce una sequenza di caratteri...alias un oggetto string! In 
questo caso la rappresentazione testuale del numero!...perfetta er 
essere "stampata" su un flusso di caratteri!
 
se tu avessi mai costruito una classe in PHP o Java o DotNet avresti 
avuto lo stesso a che fare con il metodo toString!!!
 
 
Ovviamente PHP usato come linguaggio di script non ha NESSUNO di questi 
problemi e per lui tutto è uguale a tutto salvo poi in alcuni 
situazioni incasinarsi e dover ricorrere a cast espliciti!....pian 
piano ci arriva anche il php se si vuol approcciare seriamente all'oop!
...e comunque convertire un numero in una stringa è roba "comune" in 
ogni linguaggio!
http://www.ititti.info/index.php?db=so&id=28098
 
http://framework.zend.com/issues/browse/ZF-2909
 
http://www.javabeginner.com/learn-java/java-tostring-method
 
http://www.chilkatsoft.com/braindump/ruby/ruby_convert_integer_to_string.html
 
http://www.w3schools.com/jsref/jsref_tostring_number.asp
 
 
 
etc etc
 
come sempre non ci son scorciatoie...denigra il dotnet quanto vuoi... 
ma senza mettersi a bocce ferme a studiare........
 
SALUTI! Mo basta....c'ho da fà!
 
p.s.
Mi perdonino Mauro & Co. se uso termini "maccheronici" tutto sommato 
sto anch'io ancora studiando!...per questo ci perdo tempo: mi rinfresco 
i concetti!
 
-- 
----- Italliaaaaa 3227! -----
Soldato Joker, cosa ci fa il soldato Palla di Lardo con quel fucile in 
mano nel mio fottutissimo bagno?
 
Sergente Artman [ da: "Full Metal Jacket" ]
 
 

 incasinarsi e dover ricorrere a cast espliciti!....
 
questa è la principale ragione per cui io alla fine uso sempre linguaggi 
di script, per quello che devo fare : statistiche.
Cioè devo programmare per 'raccogliere e filtrare dati in modo che siano 
consistenti.
Giá è menoso per conto proprio, se poi ci si addizioniamo i bugs che 
possono emergere per far contenta la IDE (come ad esempio un oggetto che 
si trova in un altro modulo) allora stiamo freschi. Si passa tutto il 
tempo a fare debuggiung invece che a lavorare seriamente.
 
Per questo che non uso più MatLab (principalmente perchè non è gratis, e 
poi perchè è troppo menoso, diverso da altri linguaggi, ad esempio nel 
passare argomenzi nelle functions).
 
Preferisco di lunga il python.
 
Anzi, d'ora in poi mi immergerò nel linguaggio 'R' perchè penso che 
faccia proprio al caso mio.
 
Comunque grazie del feedback.
Dato che il VB .NET non lo abbandonerò mai definitivamente (al massimo 
scrivo in C#, che appartiene alla stessa chiesa), tutto quello che 
imparo qui è sempre molto utile. (per quello che mi resterà ancora da 
programmare nella vita...alla mia età comincio ad avere giá mal di testa 
e vedere doppio se sto più di tre ore al computer).
 

 IMHO, Strict On, sempre!
 
Amen, fratello.
 
Bye, G.

 E adesso ???
 
Guarda bene nella "Finestra di controllo immediato":
'Eccezione first-chance di tipo 'System.InvalidCastException'
in Microsoft.VisualBasic.dll'
 
Bye, G.

Mille errori? rispondo anche a mizio!
BENE...li risolvo!...ci mancherebbe altro!
...
Su questo siamo d'accordo :-)

è un cast che deve essere impostato a string
se hai tolto il try catch sai dov'è
deve essere .tostring
...
E se avessi tenuto lo Strict ad ON, ti avrebbe bloccato subito :-) :-)