Italian C'è un modo per chiamare una Sub con una String?

Dominex

Active Member
Licensed User
Longtime User
Hai provato così:


B4X:
Sub Button_Click
    Dim nomesub as String
    nomesub = "MiaRoutine"
    CallSub2 (nomedelmodulo, "MiaRoutine")
End Sub

Sub MiaRoutine
End Sub
Ho trovato la soluzione che funziona:
B4X:
Sub Button_Click
    Dim nomesub,nomemodulo as String
    nomesub = "MiaRoutine"
    nomemodulo = "Main"
    CallSub (nomemodulo,nomesub)
End Sub

Sub MiaRoutine
End Sub
 

GaNdAlF89

Active Member
Licensed User
Longtime User
Se la routine che vuoi chiamare si trova nello stesso modulo in cui avviene la chiamata, basta semplicemente scrivere il nome della routine, così:

B4X:
Sub Button_Click
    MiaRoutine
End Sub

Sub MiaRoutine
End Sub

CallSub serve più che altro quando vuoi richiamare una routine che si trova in un altro modulo, ecco perché i parametri richiesti sono il nome del modulo e il nome della routine.
 

Dominex

Active Member
Licensed User
Longtime User
Se la routine che vuoi chiamare si trova nello stesso modulo in cui avviene la chiamata, basta semplicemente scrivere il nome della routine, così:

B4X:
Sub Button_Click
    MiaRoutine
End Sub

Sub MiaRoutine
End Sub

CallSub serve più che altro quando vuoi richiamare una routine che si trova in un altro modulo, ecco perché i parametri richiesti sono il nome del modulo e il nome della routine.
Io cercavo un modo per chiamare una Sub con una variabile stringa per esigenze di codice, tutto qui. Ora so come fare. :)
 

nonno

Active Member
Licensed User
Longtime User
Dim nomesub,nomemodulo as String
nomesub = "MiaRoutine"
nomemodulo = "Main"
CallSub (nomemodulo,nomesub)
B4X:
Sub btnSubByte_Click
    Dim nomesub,nomemodulo As String
    nomesub = "Code"
    nomemodulo = "Main"
    CallSub (nomemodulo,nomesub)
End Sub

Sub Code(Bytes() As Byte) As String
scusa, potresti per favore spiegarmi dove sto sbagliando?
senza variabile la carica, con variabili non riesco.:(
Grazie mille
 

Star-Dust

Expert
Licensed User
Longtime User
B4X:
Dim NomeSub As String = "mySub"
CallSub (Main,NomeSub)

il nome modulo è stringa ma il Modulo è Object, quindi va richiamato non con il nome del modulo dentro una string ma facendo riferimento al modulo stesso
 

nonno

Active Member
Licensed User
Longtime User
Dim NomeSub As String = "mySub"
CallSub (Main,NomeSub)
B4X:
Sub btnSubByte_Click
    Dim NomeSub As String = "Code"
    Dim nomeMain As Object = "Main"
    CallSub (nomeMain,NomeSub)
End Sub

Sub Code(Bytes() As Byte) As String
nel Log ce un warning #12 Sub Code non è in uso.
e sul cellulare mi dice (l'applicazione si è bloccata in modo anomalo):rolleyes:
sapete se si trovano manuali in Italiano di B4a, avevo letto da qualche parte che prima di Natale erel avrebbe pubblicato un libro.
Grazie mille
 

Star-Dust

Expert
Licensed User
Longtime User
Hai ancora sbagliato nel codice, non hai usato quello che ti ho scritto io. E credo che non hai capito quello che ti ho spiegato

Copialo esattamente cosi
B4X:
Sub btnSubByte_Click
    Dim NomeSub As String = "Code"
    CallSub (Main,NomeSub)
End Sub

Manuali ne trovi molti scritti da diversi Utenti e approvati da Erel
 

Star-Dust

Expert
Licensed User
Longtime User
Inoltre devi passare i parametri quindi devi usare questo

B4X:
Sub btnSubByte_Click
    Dim NomeSub As String = "Code"
    CallSub2(Main,NomeSub, Byte())
End Sub

Sub Code(Bytes() As Byte) AsString

In ultimo, la variabile stringa deve restituire una stringa quindi va considerato anche questo.

Spiega meglio cosa intendi fare e magari ti possiamo aiutare, ma in un nuovo post. Questo riguarda i CallSub
 
Last edited:

Star-Dust

Expert
Licensed User
Longtime User
Mi correggo.. dovrebbe funzionare così per restituire una stringa

B4X:
Sub btnSubByte_Click
    Dim NomeSub As String = "Code"
    Dim StringaRestituita as String = CallSub2(Main,NomeSub, Byte())
End Sub

Sub Code(Bytes() As Byte) AsString
 

nonno

Active Member
Licensed User
Longtime User
Sub btnSubByte_Click
Dim NomeSub As String = "Code"
Dim StringaRestituita as String = CallSub2(Main,NomeSub, Byte())
End Sub

Sub Code(Bytes() As Byte) AsString

Grazie mille DU
faccio delle prove sulla base dei tuoi esempi come criptare dati, non devo criptare dati tipo carte di credito, devo criptare dati relativi alla privacy della attività, sono riuscito ma rallenta molto il cellulare, e volevo usare codice tuo esempio
Sub Decode(bytes() As Byte) AsStringReturnBytesToString(bytes, 0, bytes.Length, "UTF8")End Sub
 

Star-Dust

Expert
Licensed User
Longtime User
LA codifica é un argomento vasto e complesso.
Ci sono algoritmi per codificare e soluzioni per velocizzare.
Dipende cosa devi fare. Ogni App richiede una soluzione specifica, che dipende dal tipo dei dati che devi trattare.
 
Top