Italian Errore con CallSubDelayed2

Sberla

Active Member
Licensed User
Longtime User
Salve a tutti sto usando il metodo CallSubDelayed2, l'ho messo in una classe e lo uso dinamicamente. Passo il nome del sub in cui ritornare la risposta:

CallSubDelayed2(activity,nomesub,risposta)

Facendo così, non funziona dandomi questo errore:

An error has occurred in sub: java.lang.exception: sub legginota was not found. Continue?



Se invece inserisco direttamente il nome del sub:

CallSubDelayed2(activity,"leggi",risposta)

funziona correttamente.

Cosa posso fare per farlo dinamico?
 

LucaMs

Expert
Licensed User
Longtime User
A parte che il tuo codice dovrebbe funzionare - probabilmente non è esattamente così o la routine non esiste...


Anche se fatta in questo modo non ha molto senso, può esserti utile, penso:

B4X:
' Classe clsMiaClasse
Sub Class_Globals
   Private mCallback As Object
   Private mEvent As String
End Sub

'Initializes the object. You can add parameters to this method if needed.
Public Sub Initialize(Callback As Object, Event As String)
   mCallback = Callback
   mEvent = Event
End Sub


Public Sub ChiamaRoutine(NomeRoutine As String, Dato As String)
   CallSubDelayed2(mCallback, mEvent & "_" & NomeRoutine, Dato)
End Sub

B4X:
' Activity - ma potrebbe anche essere un'altra classe, ad esempio
' - da qualche parte - Activity_Create, per esempio
Private objMiaClasse As clsMiaClasse
objMiaClasse.Initialize(Me, "OggMiaClasse")
objMiaClasse.ChiamaRoutine("Leggi", "Dato di prova")


Sub OggMiaClasse_Leggi(Risposta As String)
   Log(Risposta)
End Sub
 

sirjo66

Well-Known Member
Licensed User
Longtime User
CallSubDelayed2(activity,nomesub,risposta)
Ma "nomesub" di che tipo è ?
E' una stringa o un oggetto ??

E poi, perchè prima scrivi "legginota" e poi scrivi "leggi" ??
Sono due routine diverse, sicura che esistano tutte e due ??
 
Top