Gambas-it

Gambas3 => Programmazione => Topic aperto da: vuott - 30 Settembre 2012, 14:16:49

Titolo: Contenere in una variabile stringa codice Html (e non solo) da utilizzare
Inserito da: vuott - 30 Settembre 2012, 14:16:49
Come si sa non è possibile utilizzare un comando Gambas ponendolo in una variabile e richiamando poi quella variabile al suo posto:
Codice: gambas [Seleziona]

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
Titolo: Re: Contenere in una variabile stringa codice Html da utilizzare
Inserito da: md9327 - 02 Ottobre 2012, 13:16:27
Eval() ???
Titolo: Re: Contenere in una variabile stringa codice Html (e non solo) da utilizzare
Inserito da: vuott - 02 Ottobre 2012, 16:08:50
Eval() ???

Uhmmm... potrebbe essere interessante.... ma fammi un esempio con il semplice Print, o con altro.  :-\
Titolo: Re: Contenere in una variabile stringa codice Html da utilizzare
Inserito da: md9327 - 02 Ottobre 2012, 16:18:38
Da quello che ho capito, eval ammette istruzioni fatte con elementi base, logici e/o numerici.
Per le classi, o oggetti, la cosa viene svolta da Object.New(), che ti permette di creare oggetti in runtime, senza che il compilatore ci metta il naso.
E' ovvio che questo metodo non permette operazioni come Eval, ma ha lo stesso scopo, ovvero creare cose in runtime dinamiche.
E' altrettanto ovvio che la cosa necessità di molta attenzione, perchè il controllo lo ha il programma, e non più il compilatore, perchè viene esploso durante l'esecuzione, per cui errori e/o anomalie possono incasinare il programma. Comunque, con alcuni semplici accorgimenti, i problemi si possono evitare...

Per gli esempi, prova a farne qualcuno, non è complicato. Devi solo inserire un'operazione entro una stringa (es. "a=c+2"), il risultato verrà ritornato da eval in una variabile da te definita (es. var=Eval("a=c+2", valori delle variabili a e c)). Vedi help...  :D
Titolo: Re: Contenere in una variabile stringa codice Html (e non solo) da utilizzare
Inserito da: vuott - 02 Ottobre 2012, 18:21:42
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:
Codice: gambas [Seleziona]

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.
Titolo: Re: Contenere in una variabile stringa codice Html (e non solo) da utilizzare
Inserito da: vuott - 02 Ottobre 2012, 18:40:40
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:
Codice: gambas [Seleziona]

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.
Titolo: Re: Contenere in una variabile stringa codice Html da utilizzare
Inserito da: vuott - 19 Ottobre 2012, 10:52:16
Eval() ???

Rimando ad una discussione apparsa ultimamente sulla Mailing List Internazionale, e che ho riportato in questo forum qui:
http://www.gambas-it.org/smf/index.php?topic=2375.0