Cioè, tu vuoi comporre dinamicamente il nome della sub da chiamare a runtime?
mi sembra un modo per cercarsi problemi: non puoi chiamare sempre la stessa, con nome fisso e agire di conseguenza in base ad un parametro?
Prod_Class è una classe che contiene tutte le sub che devo chiamare che restituiscono il dato
Prod_Class la uso per poter utilizzare CallSub altrimenti con i moduli normali non funziona
Codice è string
Prod.Ver è int
B4X:
If SubExists(Prod_Class,"Get_" & Codice & "_" & $"${Prod.Ver}"$) = True Then
CallSub2(Prod_Class,"Get_" & Codice & "_" & $"${Prod.Ver}"$,Dati)
End If
Prod_Class è una classe che contiene tutte le sub che devo chiamare che restituiscono il dato
Prod_Class la uso per poter utilizzare CallSub altrimenti con i moduli normali non funziona
Codice è string
Prod.Ver è int
B4X:
If SubExists(Prod_Class,"Get_" & Codice & "_" & $"${Prod.Ver}"$) = True Then
CallSub2(Prod_Class,"Get_" & Codice & "_" & $"${Prod.Ver}"$,Dati)
End If
Perché usi una smart string per Prod.Ver ma non per Codice? ?
Inoltre, se prepari prima la stringa, non serve ripetere tutto il codice due volte, il che non è un problema, se non "esteticamente".
B4X:
Dim SubName As String
SubName = $"Get_${Codice}_${Prod.Ver}"$
If SubExists(Prod_Class, SubName) Then
CallSub2(Prod_Class, SubName, Dati)
End If
[Prod_Class è un oggetto! Non potrai mai chiamare la Sub di un modulo di classe]
Entrambi sono oggetti; più precisamente X punterà allo stesso-unico oggetto, prod_class.
Ripeto 'sta roba perché è importante, basilare (so che a molti sembrerò pedante/presuntuoso, ma molti altri provengono da... VB 3 ? e non hanno assimilato la OOP).
Entrambi sono oggetti; più precisamente X punterà allo stesso-unico oggetto, prod_class.
Ripeto 'sta roba perché è importante, basilare (so che a molti sembrerò pedante/presuntuoso, ma molti altri provengono da... VB 3 ? e non hanno assimilato la OOP).
Non hai chiamato una sub di un modulo di classe, in quanto non è possibile, hai chiamato la sub di X, che è un variabile oggetto (ovvero un oggetto) di tipo (classe) prod_class
Non hai chiamato una sub di un modulo di classe, in quanto non è possibile, hai chiamato la sub di X, che è un variabile oggetto (ovvero un oggetto) di tipo (classe) prod_class
1 - crei un modulo di classe - ovvero una classe, il testo di una classe
2 - NON potrai chiamare le sue Sub (metodi), proprietà, variabili pubbliche direttamente, come potresti fare con un modulo di codice. Quest'ultimo è sempre ed ovunque disponibile ed in una "unica versione"
3 - crei una variabile-oggetto (un oggetto!), che dichiari di "tipo" (classe) di quella classe. La inizializzi ed a quel punto hai un oggetto = istanza della classe
4 - Puoi chiamare le sub (metodi) di quell'oggetto (variabile oggetto) direttamente: x.NomeSub o indirettamente: CallSub ...
Sono le basi della programmazione ad oggetti, in tutti i linguaggi.
1 - crei un modulo di classe - ovvero una classe, il testo di una classe
2 - NON potrai chiamare le sue Sub (metodi), proprietà, variabili pubbliche direttamente, come potresti fare con un modulo di codice. Quest'ultimo è sempre ed ovunque disponibile ed in una "unica versione"
3 - crei una variabile-oggetto (un oggetto!), che dichiari di "tipo" (classe) di quella classe. La inizializzi ed a quel punto hai un oggetto = istanza della classe
4 - Puoi chiamare le sub (metodi) di quell'oggetto (variabile oggetto) direttamente: x.NomeSub o indirettamente: CallSub ...
Sono le basi della programmazione ad oggetti, in tutti i linguaggi.