Newsgroup: it.comp.lang.visual-basic
Titolo: Classi e proprietà: primi problemi

Scusate, ma non riesco a trovare la soluzione al seg. problema.
Ho il seg. codice:
________________________________________________________________
CODICE DI CLASS1
________________________________________________________________
Option Explicit
Private m_nome As String
Private m_cognome As String
________________________________________________________________
Public Property Get nome() As Variant
m_nome = nome
End Property
________________________________________________________________
Public Property Let nome(ByVal vNewValue As Variant)
If vNewValue = "" Then Err.Raise 5
nome = vNewValue
End If
End Property
________________________________________________________________
Public Property Get cognome() As Variant
m_cognome = cognome
End Property
________________________________________________________________
Public Property Let cognome(ByVal vNewValue As Variant)
If vNewValue = "" Then Err.Raise 5
cognome = vNewValue
End If
End Property
________________________________________________________________
CODICE DEL COMMANDBUTTON
________________________________________________________________
Option Explicit
________________________________________________________________
Private Sub Command1_Click()
Dim persona As Class1
Set persona = New Class1
persona.cognome = "La Trippa"
persona.nome = "Antonio"
Debug.Print persona.nome & " " & persona.cognome
End Sub
Perchè ottengo come errore di run-time 'Errore di compilazione - End If
senza blocco If' e vengo rimandato alla routine
Public Property Let cognome(ByVal vNewValue As Variant) ??
Se cerco di usare m_nome ed m_cognome ottengo come errore 'Impossibile
ottenere il membro dei dati'.
L'esempio qui sopra è preso pari pari dal libro su cui sto studiando.
Ho altri due messaggi con un problema simile ma sono tale classe sviluppata
ulteriormente; ho pensato di reinizializzare la classe e vedere passo passo
cosa succede, ma proprio non riesco ad individuare il problema.
Praticamente: io ho dichiarato come Private le due proprietà. Tramite le
Property Get e Let faccio si che si interfaccino con il codice esterno - il
tutto attraverso vNewValue - cosicchè quando nel codice scrivo persona.nome
= "Antonio", la stringa "Antonio" viene prima passata alla Property Let Nome
tramite vNewValue, poi viene assegnata alla proprietà nome. Nome a sua volta
viene assegnata alla proprietà m_nome della rispettiva routine Property Get
Nome, che infine restituisce il valore al codice chiamante, quello
all'interno di Command Button. Infine il tutto dovrebbe finire al comando
Debug.Print. Ho capito tutto? Se si, allora che senso ha tale stranissimo
errore?
Spero possiate aiutarmi, nel frattempo vi auguro buon lavoro.

L'esempio qui sopra č preso pari pari dal libro su cui sto studiando.
Non credo. Oppure, se sei sicuro al 200% che sia cosě, fai il nome
dell'autore: non vorrai mica che diventi ricco facendo questi errori,
no?
Ciao,
Moreno
#sirri#@#
morenosoft.com#
(togliete "#" dall'indirizzo)
Moreno Sirri VB Site - 
http://www.msvbsite.net
---------------------------------------------------------------------------
Le risposte alle tue domande le trovi sul Sito Comune di questo NewsGroup:
 
http://www.it-lang-vb.net
---------------------------------------------------------------------------

>End Property
Al di là dell'errore e della sua risoluzione... consiglio: se devi
gestire gli errori localmente, in ogni routine, non gestirli alla
spicciolata, ma...
public sub nomeroutine()
	on error goto errHandler
	'fai quello che devi fare
 
	Exit sub
errHandler:
	err.raise .... ecc. ecc...
	o comunque gestisci e generi qui gli errori...
end sub
idem per quanto riguarda function, property e compagnia bella...


"songohan" <fan...@TuttiILamer.it> ha scritto nel messaggio
news:Eaku7.6468$0Y2.1...@news.infostrada.it...
Cut
Siccome oggi passo da cattivo ed è giornatuccia...faccio il bravo...
If vNewValue = "" Then Err.Raise 5  <--- se dici così
nome = vNewValue
End If <------------------ che ci sta a fà?(ahò l'abitudine e la stanchezza
mi ci è voluto 5 min!)
penso tu la voglia trasformare così
If vNewValue = "" Then
    Err.Raise 5
  (nome = "?" ad esempio)
else
    nome = vNewValue
End If
...scusa moreno..... 8-)

 scritto...
..........santo Dio........si, ho letto bene....
Beh, chiedo venia..........sarà che sto studiando 4 cose insieme e non ci
sto capendo più niente......Urgono rimedi.
Scusa!!

 idem per quanto riguarda function, property e compagnia bella...
Si, ma stavo seguendo l'esempio del libro....che ho seguito male.
Cmq quello che mi hai detto l'ho letto e stampato, tant'č che non č piů un
problema :)
Semplicemente 'st'errore di sintassi...........Mah! Che devo dě....piů
attenzione, e una cosa per volta.
P.S. oltre a VB sto studiando C/C++, SQL, basi di Java, e basi di S.O. Pensi
che esploda prima o poi? :)

 mi ci è voluto 5 min!)
A me una giornata.........che errore stupidoooo!!!!! Mi vergogno!

che esploda prima o poi? :)
Non lo so, non saprei e non potrei giudicare le tue capacità, però mi
vien da pensare il motto "meglio poco e bene...". Ovviamente dipende dal
livello di conoscenza di ciascun argomento, ma se sei agli inizi con
tutti, sinceramente ti consiglierei una cosa per volta... magari due,
non lo so, dipende da te... però appena senti che cominci a fare
confusione, stop. Poi quando hai preso n po' di dimestichezza ed
acquisito qualche nozione in più potrai sentirti di studiare ancora
qualcos'altro, anche 10 cose assieme, però, ripeto, se senti di far
confusione, meglio fermarsi e lasciar stare qualcosa...
E' comunque solo il mio coniglio, just my 2 cents...
Ciao,
Moreno
#sirri#@#morenosoft#.com


 E' comunque solo il mio coniglio, just my 2 cents...
2 cents al kg o al pezzo ?



buahahaha!!!! ROTFLOL :-)))
Non puoi farmi questo!!!! Vabbé, almeno ho iniziato la giornata con una
sonora risata... :-P
Ciao,
Moreno
#sirri#@#
morenosoft.com#


 
Che è ancora sbagliato.
Infatti non stai assegnando a m_nome, ma a nome, cioè alla proprietà.
Così generi una chiamata ricorsiva alla property let.
-- 
Samuele Battarra
prova il mio newsreader:
http://digilander.iol.it/battarsa/programmi/news/

 ha scritto nel messaggio
news:dpHu7.14807$0Y2.2...@news.infostrada.it...
