Newsgroup: it.comp.lang.visual-basic
Titolo: Sto impazzendo!!! Procedure non cabia valori

Ciao a tutti sto impazzendo!!!
Questa č la procedura.
Private Sub Topic_Item(s As String, topic As String, item As String, i As 
Integer)
    Dim aLink() As String
    s = Replace(s, "=", "") 'elimina =
    s = Replace(s, "'", "") 'elimina '
    aLink() = Split(s, "!")
    topic = aLink(0)
    item = aLink(1)
End Sub
La richiamo cosě:
txtPrezzo(i).linktopic = "DDE|AZ"
txtPrezzo(i).linkitem = "AEM"
t = txtPrezzo(i).linktopic
tt = txtPrezzo(i).linkitem
Topic_Item aDati(i, 2), t, tt, i
ho inserito dei debug.print per controllare e aDati(i,2) cambia, come deve 
essere, ma t e tt no!!! Perché????
Non capisco! AIUTO!
Grazie a tutti Ciao Davide

 La richiamo così:


 Integer)
Nella definizione dei parametri non hai inserito la clausola byref per
determinare che sono parametri d'input/output.
Private Sub Topic_Item(byref s As String,byref topic As String,byref
item As String, byref i As  Integer)
Il primo parametro ti ritornava variato perchè il passaggio delle
matrici avviene sempre per indirizzo (byRef) e non per valore (ByVal).
Spero di esserti stata d'aiuto
ciao

Hai inserito delle modifiche?


 Questa è la procedura.
[cut]
Io darei un'occhiata al carattere che usi per lo split...cosi', tanto
per dubbio ;-D

 Non capisco! AIUTO!
P.S.: l'F8, questo illustre sconosciuto...

Mitico!
Ti spiego io avevo fatto cosě:
Private Sub Topic_Item(s As String,byref topic As String,byref
item As String,  i As  Integer)
Cioč avevo messo ByRef solo a 2 e non funzionava o non avevo capito.
Adesso va.
ma perchč se io faccio cosě:
t = txtPrezzo(i).LinkTopic
tt = txtPrezzo(i).LinkItem
Topic_Item aDati(i, 2), t, tt, i
funziona i valori di t e tt cambiano e invece se faccio:
Topic_Item aDati(i, 2), txtPrezzo(i).LinkTopic, txtPrezzo(i).LinkItem, i
i valori di txtPrezzo(i).LinkTopic e txtPrezzo(i).LinkItem non cambiano sono 
sempre String
Comunque ti ringrazio molto mi sei stato di grande aiuto.
Ciao
Nella definizione dei parametri non hai inserito la clausola byref per
determinare che sono parametri d'input/output.
Private Sub Topic_Item(byref s As String,byref topic As String,byref
item As String, byref i As  Integer)
Il primo parametro ti ritornava variato perchč il passaggio delle


l'oggetto txtPrezzo(i) non è di tipo string.
con l'istruzione
txtPrezzo(i).LinkTopic tu richiami la funzione LinkTopic dell'oggetto
txtPrezzo(i)

 sono sempre String
le proprietą pubbliche di oggetti, anche se sono di tipo semplice (string, 
long etc..), se passate in argomento tramite l'istanza dell'oggetto stesso, 
sono sempre intese ByVal anche se metti ByRef 

 stesso, sono sempre intese ByVal anche se metti ByRef
Il vero problema è questo, ma non perchè sono passate ByVal, ma perchè è 
come modificare il valore di una funzione: la proprietà restituisce un 
valore che poi viene modificato ma questo viene perso perchè in raltà è il 
valore restituito che viene passato alla funzione e non il puntatore al 
valore della proprietà (chiaro, no?).
L'uso esplicito del ByRef è assolutamente ininfluente poichè di default i 
parametri sono sempre ByRef (è comunque buona norma indicare sempre ByRef o 
ByVal per chiarezza sulle intenzioni).
Ciao 

Grazie a tutti siete stati utilissimi.
Ancora Grazie
Davide