Come si sa non è possibile utilizzare un comando Gambas ponendolo in una variabile e richiamando poi quella variabile al suo posto:
Public Sub Button1_Click()
Dim s As String
s = "Print"
s "alibaba"
End
Un codice così concepito dà l'errore: Unexpected string .
Il codice Html, usato all'interno del codice Gambas, invece lo consente:
http://www.gambas-it.org/wiki/index.php/Controlli_e_finestre_che_supportano_il_codice_HTML#Utilizzare_il_codice_Html_contenuto_in_una_variabile_stringa
Da quello che ho capito, eval ammette istruzioni fatte con elementi base, logici e/o numerici.
Devi solo inserire un'operazione entro una stringa (es. "a=c+2")
Be'... alcune cose le fa, ammettendo istruzioni con elementi base, come hai detto tu. Ammette, inoltre, l'uso anche di alcune istruzioni Gambas (ma, da quel che mi è parso dalle prove, non tutte... bisognerebbe indagare meglio).
Ad esempio:
Public Sub Button1_Click()
Dim fn As New Collection
Dim i as Integer
Dim s As String
fn["i"] = Pid_finestra_di_un_programma
s = "Let Desktop.ActiveWindow = i"
Eval(s, fn)
End
Appunto in questo caso ho usato all'interno di Eval() una variabile stringa contenente una precisa istruzione, e non direttamente l'istruzione medesima.
Una cosa va sottolineata della funzione Eval(): che nella variabile stringa, che tale funzione è capace di utilizzare, viene contenuta proprio un'istruzione Gambas.
Da quello che emerge, sia dalla questione Html, sia da quella Eval(), l'uso di istruzioni contenute all'interno di variabili è possibile (quando la cosa funziona) solo se dette istruzioni - in situazione normale - sono eseguite dalla funzione all'interno di una stringa.
Infatti, detto uso è possibile anche con altre funzioni, la più evidente è la seguente:
Public Sub Form_Open()
Desktop.OpenTerminal
End
Public Sub Button1_Click()
Dim s As String
Dim ss As String[]
s = "ls > /dev/pts/1"
Shell s
ss = ["ls", "/tmp"]
Exec ss
End
Vedremo un risultato nel Terminale ed un altro nella console dell'Ide di Gambas.