Accedi per seguire   
Seguaci 0
sIx

[vb] Errore

9 messaggi in questa discussione

ciao, ho da poco iniziato a studiare informatica (ho fatto sl un'ora..) ma ho deciso di portarmi un po' piu' avanti rispetto al resto della classe e quindi sono andato oltre "msgbox"(unico comando spiegato dal prof) scaricando un manuale per Visual Basic 6. Il mio primo programma è un classico: calcolare perimetro ed area di un rettangolo. solo che, dopo aver inserito il codice agli elementi visivi, provo ad eseguire il programma ma VB mi dice "Errore di compilazione: Impossibile trovare il metodo o il membro dei dati". Eppure, controllando, mi pare di nn aver sbagliato nulla :P

Chiedo aiuto a voi veterani :)

_________________________________________________

Private Sub Frame1_DragDrop(Source As Control, X As Single, Y As Single)

End Sub

Private Sub cmdEvaluate_Click()

Dim reWidth As Double, reHeight As Double

reWidth = CDbl(txtWidth.Text)

reHeight = CDbl(txtHeight.Text)

txtPerimeter.Text = CStr((reWidth + reHeight) * 2)

txtArea.Text = CStr(reWidth * reHeight)

End Sub

Private Sub txtHeight_Change(Index As Integer)

txtPerimeter.Text = ""

txtArea.Text = ""

End Sub

Private Sub txtWidth_Change(Index As Integer)

txtPerimeter.Text = ""

txtArea.Text = ""

End Sub

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Ciao,

l'errore viene generato perchè il passaggio dei parametri nelle definizioni della Private Sub txtHeight_Change e della Private Sub txtWidth_Change sono errati...

L'evento Change infatti non utilizza alcun parametro come puoi notare dal visualizzatore di oggetti:

Event Change()

Membro di VB.TextBox

Viene generato quando il contenuto di un controllo viene modificato.

Ti consiglio quindi di togliere i parametri attuali (Index as Integer) dal codice delle due Sub.

In definitiva il codice dovrebbe essere il seguente:

Private Sub Frame1_DragDrop(Source As Control, X As Single, Y As Single)

End Sub

Private Sub cmdEvaluate_Click()

Dim reWidth As Double, reHeight As Double

reWidth = CDbl(txtWidth.Text)

reHeight = CDbl(txtHeight.Text)

txtPerimeter.Text = CStr((reWidth + reHeight) * 2)

txtArea.Text = CStr(reWidth * reHeight)

End Sub

Private Sub txtHeight_Change()

txtPerimeter.Text = ""

txtArea.Text = ""

End Sub

Private Sub txtWidth_Change()

txtPerimeter.Text = ""

txtArea.Text = ""

End Sub

Spero di essere stato chiaro, sopratutto se è la prima volta che ti avvicini alla programmazione... :):P:P:wub:

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

chiarissimo.. soltanto che togliendo index as integer nn risolvo nulla.. Ora mi dice "la dichiarazione della routine non corrisponde alla descrizone dell'evento o della routine con lo stesso nome"

l'errore c'era anke prima che aggiungessi le proprietà change alle due textbox, cmq, quindi nn credo che il problema sia lì :)

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Ma insegnano ancora VB6 nelle scuole? Il resto del pianeta è arrivato al VB.NET 2005 <_<

Questo messo così non ha nessuna utilità...puoi anche rimuoverlo

Private Sub Frame1_DragDrop(Source As Control, X As Single, Y As Single)

End Sub

- Scusa ma che valori hanno reWidth e reHeight ?

- Perchè usi il Cdbl? sono già state dichiarate double, non è il caso di riconvertirle...

Ho scritto il codice da zero in VB 2005, funziona:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
	perimetro.Text = (Val(base.Text) + Val(altezza.Text)) * 2
	area.Text = (Val(base.Text) * Val(altezza.Text)) / 2
End Sub

Private Sub base_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles base.TextChanged
	area.Text = ""
	perimetro.Text = ""
End Sub

Private Sub altezza_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles altezza.TextChanged
	area.Text = ""
	perimetro.Text = ""
End Sub

NOTA1: base, altezza, perimetro e area sono delle textbox

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti
Ma insegnano ancora VB6 nelle scuole? Il resto del pianeta è arrivato al VB.NET 2005

anche a me insegnano VB6

adesso abbiamo cominciato ad utilizzare winsock :)

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Non riesco a capire dove si trova di preciso il problema....

prima di inviarti il codice corretto l'avevo provato su VB6 e non c'era alcun problema....

Prova ad inviarmi il progetto zippato....così lo provo sul mio VB6.

Ciao

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

ho messo il progetto zipapto sul mio sito,

lillo, se vuoi dargli un'occhiata vai su http://alfo90.googlepages.com/ e clicca su "HELP!!"

GRAZIE!! :P

cmq il prof disse che il .NET l'avremmo fatto piu' avanti... boh :)

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Ciao,

allora il problema è che tu hai utilizzato una matrice di controlli quindi puoi risolvere il problema in due modi diversi:

- Continui ad utilizzare la matrice di controlli correggendo il codice (ma non hai bisogno nel tuo programma)

- Elimini la matrici di controlli.

Ti spiego la seconda soluzione perchè logicamente più corretta.

Noterai che gli oggetti visuali hanno nel nome un numero tra le parentesi, questo numero serve ad identificare il controllo nel caso in cui ne avessi diversi con lo stesso nome....ma non è il tuo caso...

Elimina la proprietà index dei controlli, poi elimina il parametro Index as integer delle intestazioni delle private sub come ti ho detto in precedenza...

Ciao

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

hai ragione.. ho risolto.. grazie 1000 :)

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Crea un account o accedi per lasciare un commento

Devi essere un utente registrato per partecipare

Crea un account

Iscriviti per un nuovo account nella nostra community. È facile!


Registra un nuovo account

Accedi

Sei già registrato? Accedi qui.


Accedi Ora
Accedi per seguire   
Seguaci 0