Autore Topic: [RISOLTO] FOR WRITE --> variabile  (Letto 777 volte)

Offline kicco

  • Senatore Gambero
  • ******
  • Post: 1.728
  • So dove andare, seguitemi, ci perderemo insieme!
    • Mostra profilo
[RISOLTO] FOR WRITE --> variabile
« il: 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)
 :)
« Ultima modifica: 25 Agosto 2013, 20:35:31 da kicco »
Chi ha paura muore ogni giorno, chi non ha paura muore una volta sola. (Paolo Borsellino)

Offline simo97

  • Gran Maestro dei Gamberi
  • *****
  • Post: 501
    • Mostra profilo
Re: FOR WRITE --> variabile
« Risposta #1 il: 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

;D

Offline kicco

  • Senatore Gambero
  • ******
  • Post: 1.728
  • So dove andare, seguitemi, ci perderemo insieme!
    • Mostra profilo
Re: FOR WRITE --> variabile
« Risposta #2 il: 17 Agosto 2013, 18:05:51 »
 :ciao:
grazie Simo97,
la variabile è per forza una stringa?
Se sì quindi devo convertirla in intero?
 :ciao:
« Ultima modifica: 25 Agosto 2013, 20:36:14 da kicco »
Chi ha paura muore ogni giorno, chi non ha paura muore una volta sola. (Paolo Borsellino)

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.724
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: FOR WRITE --> variabile
« Risposta #3 il: 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
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline kicco

  • Senatore Gambero
  • ******
  • Post: 1.728
  • So dove andare, seguitemi, ci perderemo insieme!
    • Mostra profilo
Re: FOR WRITE --> variabile
« Risposta #4 il: 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:
« Ultima modifica: 25 Agosto 2013, 20:37:22 da kicco »
Chi ha paura muore ogni giorno, chi non ha paura muore una volta sola. (Paolo Borsellino)

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.724
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: FOR WRITE --> variabile
« Risposta #5 il: 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.
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline kicco

  • Senatore Gambero
  • ******
  • Post: 1.728
  • So dove andare, seguitemi, ci perderemo insieme!
    • Mostra profilo
Re: FOR WRITE --> variabile
« Risposta #6 il: 17 Agosto 2013, 21:16:20 »
 :) :) :)
centro!!!!

come sempre ....GRAZIE!

 :ciao:
Chi ha paura muore ogni giorno, chi non ha paura muore una volta sola. (Paolo Borsellino)

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.724
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: FOR WRITE --> variabile
« Risposta #7 il: 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
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline kicco

  • Senatore Gambero
  • ******
  • Post: 1.728
  • So dove andare, seguitemi, ci perderemo insieme!
    • Mostra profilo
Re: FOR WRITE --> variabile
« Risposta #8 il: 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:
Chi ha paura muore ogni giorno, chi non ha paura muore una volta sola. (Paolo Borsellino)