Newsgroup: it.comp.lang.visual-basic
Titolo: [??] Passaggio di oggetti a funzioni o sub

Mi trovo in una situazione imbarazzante.
Ho scritto una cosa del genere :
'°°°°°°°°°°°
' [Text1 è il nome di un controllo TextBox]
 ControlloOra (Text1)
°°°°°°°°
function ControlloOra (txt as TextBox) as boolean
    '[controllo ora]
end function
'°°°°°°°°°
il codice non da' problemi ma adesso, ogni volta che cerco di utilizzare un
simile passaggio di oggetti a funzioni o sub, mi salta fuori un messaggio di
'tipo non corrispondente'
Qualcuno si è già trovato in situazioni simili?
Ha senso, in VB5, passare direttamente oggetti a funzioni che si aspettano
esattamente quel tipo di oggetto?
Se no, perchè ho un programma che non da' errori, ma se aggiungo una
qualsiasi ulteriore struttura simile o praticamente identica questa mi da'
errore?
Mi rendo conto che sembra una cosa impossibile ma ho riricontrollato tutto e
non riesco a capire.
Chi mi aiuta???
Grazie.
_sng_

 esattamente quel tipo di oggetto?
si
-------------------------------------
prova a chiamare la funzione non così
ControlloOra (Text1)
bensì
ControlloOra Text1
(naturalmente se non ti serve usare il valore restituito dalla function)
Funzia?
Faber

 esattamente quel tipo di oggetto?



Strano, utilizzo il passaggio di oggetti a funzioni senza problemi.
Prova a togliere le parentesi nella chiamata della funzione:
ControlloOra Text1
--
 
federic...@planet.it
Eliminare NOSPAM dall'indirizzo! Delete NOSPAM from address!

 ma ho riricontrollato tutto e non riesco a capire.
Riassumo. Hai scritto la funzione:
    Function ControlloOra(txt As TextBox) As Boolean
        ' [...]
    End Function
e quando scrivi:
    ControlloOra(Text1)
funziona, mentre con, per esempio:
    ControlloOra(Label1)
ottieni l'errore "Tipo non corrispondente"? Se le cose stanno
cosi` potresti scrivere, per esempio:
    Function ControlloOra(ctl As Control) As Boolean
        If TypeOf ctl Is TextBox Then
            ' ...
        ElseIf TypeOf ctl Is Label Then
            ' ...
        Else
            ' ...
        End If
        ' ...
    End Function
    - oppure -
se vuoi passare qualsiasi oggetto:
    Function ControlloOra(obj As Object) As Boolean
    - oppure -
ancora piu` generico, con la necessita` di distinguere tra
variabili ed oggetti:
    Function ControlloOra(vnt As Variant) As Boolean
--
Ciao.
Maurizio

 '°°°°°°°°°
Grazie a tutti per avermi chiarito le idee.
In pratica se chiamo una Function utilizzando il valore di ritorno DEVO
passare gli argomenti tra parentesi.
Se invece la chiamo come fosse una Sub allora DEVO passare gli argomenti
senza parentesi.
Problema risolto.
Grazie ancora.
_sng_

 Problema risolto.
Quale? ;-)
--
Ciao.
Maurizio


Ciao _sng_

 sempre passare gli argomenti tra parentesi, il che esclude ogni ambiguità.
No ... es:
Public Sub MiaSub01
    MsgBox "Questa è: MiaSub01"
EndSub
Public Sub MiaSub02 (Par1 as integer, Par2 as String)
    MsgBox "Questa è: MiaSub01"
EndSub
Chiamate:
MiaSub01
Call MiaSub01
MiaSub02(11, "Stringa di testo")
Call MiaSub02(11, "Stringa di testo")
MiaSub02 11, "Stringa di testo"
Call MiaSub02 11, "Stringa di testo"
Ok?!?!?
Non e' il Call che fa la differenza ... e' la dichiarazione della Sub (o
Function che sia!!!)
--
Ciaps
Stracca
---------------------------------------------
    Le risposte alle tue domande le trovi
    sul Sito Comune di questo NewsGroup:
 
http://www.murialdo.it/it_lang_vb
       ... e nell'help in linea !
---------------------------------------------