Gambas-it

Gambas3 => Programmazione => Topic aperto da: kicco - 17 Agosto 2013, 15:03:28

Titolo: [RISOLTO] FOR WRITE --> variabile
Inserito da: kicco - 17 Agosto 2013, 15:03:28
 :ciao:
come faccio a "passare" l'uscita di una shell ad una variabile?
Codice: gambas [Seleziona]

' Gambas module file


Public Sub Main()
 Dim a As Integer
 
  Shell "gpio mode 1 input" ' setto il pin 1 come input
  
    Do
        ' loop infinito che controlla se il piedino1 diventa =1
          
       Shell "gpio read 1" For Write
      
    Loop
  
 End


quel FOR WRITE mi manda all'uscita standard io vorrei invece intercettarlo e caricarlo nella variabile a (integer)
 :)
Titolo: Re: FOR WRITE --> variabile
Inserito da: simo97 - 17 Agosto 2013, 16:51:52
con il to variabile hai quello che ti serve....

esempio:
Codice: gambas [Seleziona]

Dim ris As String
Shell "ls " & Application.Path To ris
Print ris

Titolo: Re: FOR WRITE --> variabile
Inserito da: kicco - 17 Agosto 2013, 18:05:51
 :ciao:
grazie Simo97,
la variabile è per forza una stringa?
Se sì quindi devo convertirla in intero?
 :ciao:
Titolo: Re: FOR WRITE --> variabile
Inserito da: vuott - 17 Agosto 2013, 18:11:52
l avariabile è per forza una stringa?


Sulla base della Guida ufficiale di Gambas, sembrerebbe di sì:
" ...the interpreter waiting for its end, and the complete command output is put in the specified string. "

http://gambasdoc.org/help/lang/shell#t2
Titolo: Re: FOR WRITE --> variabile
Inserito da: kicco - 17 Agosto 2013, 21:04:37
Perche' allora se cerco di convertirlo in intero mi da l'errore segnalato? gasp! non capisco!
Codice: gambas [Seleziona]

Public Sub Main()
 Dim a As String
 Dim ib As Integer
 
 Shell "gpio mode 1 input"       'setto il pin 1 come input
  
    Do
       Shell "gpio read 1" To a  
       Print a
       ib = CInt(a)              'ERRORE! [type mismatch: wanted integer, got string instead]
       If ib = 1 Then Print "evento"
    Loop
  
 End



a e' una stringa, CInt dovrebbe convertirla in intero invece... mi sa che sto prendendo il solito granchio!  :)
 :ciao:
Titolo: Re: FOR WRITE --> variabile
Inserito da: vuott - 17 Agosto 2013, 21:13:12
a e' una stringa, CInt dovrebbe convertirla in intero invece...


Prova ad usare la funzione Val( ): dovrebbe convertire il valore (lì di tipo Stringa) in un valore numerico.
Titolo: Re: FOR WRITE --> variabile
Inserito da: kicco - 17 Agosto 2013, 21:16:20
 :) :) :)
centro!!!!

come sempre ....GRAZIE!

 :ciao:
Titolo: Re: FOR WRITE --> variabile
Inserito da: vuott - 17 Agosto 2013, 21:25:22
Direi che  :-[ la funzione CInt() andrebbe usata nel caso in cui il valore è già numerico, sebbene di tipo non Intero, e lo si intende convertire - appunto - in un Intero.

Poniamo questo semplice esempio:
Codice: gambas [Seleziona]

Public Sub quellocheè()

  Dim b As Byte
  Dim i As Integer

   b = 100

' Convertiamo il valore contenuto nella variabile "b" da tipo "Byte" in tipo "Integer":
    i = CInt(b)

    Print i

End
Titolo: Re: FOR WRITE --> variabile
Inserito da: kicco - 19 Agosto 2013, 08:25:04
 :)
si certo hai ragione
scusa il ritardo delle mie risposte, ma sono in montagna e la rete va qundo vuole lei?
 :ciao: