Autore Topic: Variabili  (Letto 1580 volte)

Offline Ferdinando88

  • Gamberetto
  • *
  • Post: 44
    • Mostra profilo
Variabili
« il: 28 Marzo 2012, 13:15:25 »
Ciao a tutti....volevo chiedervi se è possibile settare una variabile che conservi un valore anche dopo che il programma viene chiuso.
Nello specifico vorrei fare in modo che quando un utente apre il programma per la prima volta compaia un messaggio che poi non compare più le volte successive.

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.266
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: Variabili
« Risposta #1 il: 28 Marzo 2012, 13:28:59 »
settare una variabile che conservi un valore anche dopo che il programma viene chiuso.
...mi viene in mente solo quello di salvare quel valore in un classico file.
« 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 Ferdinando88

  • Gamberetto
  • *
  • Post: 44
    • Mostra profilo
Re: Variabili
« Risposta #2 il: 28 Marzo 2012, 13:33:07 »
Qualcuno mi parlava di variabili d'ambiente....puoi spiegarmi cosa sono ?


Offline md9327

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.840
    • Mostra profilo
Re: Variabili
« Risposta #4 il: 28 Marzo 2012, 15:31:31 »
Le variabili d'ambiente fanno parte dell'interprete del terminale su cui sei connesso.
In particolare, e nelle odierne distribuzioni Linux, di norma viene usato bash, che ti si attiva ogni volta che apri un terminale di default (stiamo parlando di interazione a riga di comando con il kernel...).
Questi interpreti, a partire da "sh", "bash", e vi a dicendo, possiamo intenderli come meta-linguaggi, ovvero hanno funzioni e variabili come un qualsiasi altro linguaggio. E' ovvio che lo svedrai trato può essere alquanto limitato rispetto ad un linguaggio evoluto, ma ti permette di eseguire anche operazioni complesse sul sistema operativo (es. tramite uno script).
Detto questo, parlando di variabili, se tu provi da un terminale a digitare il comando "env", vedrai comparire una serie di righe, ognuna con un'etichetta seguita da un valore. Oguni etichetta è appunto una variabile di ambiente, che puoi leggere e modificare (dipendentemente dalle autorizzazioni) in modoche ogni programma o applicazione  possa attingere per effettuare eventuali impostazioni procedurali.
Tanto per fare un esempio, l'etichetta LANG (o LANGUAGE), definisce la lingua usata dall'utente, e quindi condiziona le applicazioni in modo che, ad esempio, le scritte e i messaggi ti vengano presentati in Italiano (è un esempio...).
Tieni però presente che la variazione di queste variabili hanno la stessa logica di validità temporale di ogni altra variabile, ovvero sono valide fino a che il terminale è attivo, e quindi vengono perse quando si esce e si chiude il terminale stesso. Per rendere queste variabili statiche, ovvero reimpostate al valore voluto, è necessario definirle nei file di configurazione previsti per gli ambienti Linux, che vengono letti all'avvio del sistema operativo.
Detto questo, devi prima capire cosa vuoi ottenere, perchè a mio avviso l'uso di queste variabili potrebbe diventare alquanto fastidioso e immanutenibile. Io credo sia meglio lavorare con un bel file di testo...

Offline Ferdinando88

  • Gamberetto
  • *
  • Post: 44
    • Mostra profilo
Re: Variabili
« Risposta #5 il: 28 Marzo 2012, 17:25:36 »
Mi avete convinto con il file di testo e sono riuscito a fare in modo che il programma controlli l esistenzadi un file nella home e di conseguenza invii un messaggio....però io vorrei che controllasse la presenza di una riga di testo specifica nel file e se presente invii un messaggio all utente

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.266
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: Variabili
« Risposta #6 il: 28 Marzo 2012, 17:50:22 »
però io vorrei che controllasse la presenza di una riga di testo specifica nel file e se presente invii un messaggio all utente

Poniamo il caso che il tuo file contenga tre righe distinte:

trono non è un salmonide
tromba non è un salmonide
trota è un salmonide


Ignorandolo, vuoi sapere se c'è nel file la riga "trota è un salmonide"...

Percorso semplice:
Codice: gambas [Seleziona]

Public Sub Button1_Click()

 Dim s As String

'...andiamo a vedere se ci sono all'interno della stringa
' quattro caratteri "trot", posti in questo ordine preciso (cioè se c'è la parola "trot"),
' eventualmente' preceduti e seguiti da altri caratteri che però a noi non importa
' se ci sono né quali essi siano:
  If s Like "*trot*" Then
' se ci sono quei quattro caratteri (la parola "trot"), allora... la riga che ci interessava è presente:
    Print "E' presente la riga della trota !"
  Endif

End



Percorso complesso:
Codice: gambas [Seleziona]

Public Sub Button1_Click()

 Dim s, sss As String
 Dim ss As String[]

  s = File.Load("percorso_mio_file")

' Il fine è di analizzare il testo di ogni riga.
' Poiché nella variabile stringa "s" le tre righe risultano indistinte (appunto in un'unica stringa),
' le distiguiamo con la creazione di tante sotto-stringhe quante sono le righe.
' Assegneremo ad ogni riga una propria stringa. Ciò sarà fatto attraverso l'uso di una stringa-array.
' Per impostare il punto di demarcazione fra una riga e l'altra, utilizzeremo la funzione Split con
' il separatore "salto di linea": \n (ciò non perché sia scontato o perché sia di regola, ma perché sappiamo
' che nel file le tre righe sono distinte e divise da un ritorno a capo. Se fossero invece disposte su un'unica
' lunga riga, non potremmo usare come separatore il "\n", ma qualcos'altro !) :
  ss = Split(s, "\n")

' Per ogni sotto-stringa presente nella variabile stringa-array....
  For Each sss In ss

'...andiamo a vedere se esistono quattro caratteri "trot",
' eventualmente seguiti da altri caratteri che però a noi
' non importa se ci sono né quali essi siano:
      If sss Like "trot*" Then
' se c'è questa parola, allora... la riga che ci interessava è presente:
         Print "E' presente la riga della trota !"
       Else
        Print "Ritenta, sarai più fortunato !"
      Endif
      
    Next
« Ultima modifica: 29 Marzo 2012, 00:31:44 da vuott »
« 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 Ferdinando88

  • Gamberetto
  • *
  • Post: 44
    • Mostra profilo
Re: Variabili
« Risposta #7 il: 28 Marzo 2012, 21:51:08 »
Vuott sei sempre il migliore nelle guide.... :ok:

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.266
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: Variabili
« Risposta #8 il: 29 Marzo 2012, 00:23:34 »
Purtroppo non sono il migliore nelle guide, comunque, poiché io sono un semi-analfabeta  :hard: in Gambas, so bene cosa significa avere una spiegazione - possibilmente semplice e comprensibile - che ti chiarisca i dubbi e ti instradi !
« 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 Ferdinando88

  • Gamberetto
  • *
  • Post: 44
    • Mostra profilo
Re: Variabili
« Risposta #9 il: 29 Marzo 2012, 08:11:49 »
W gli analfabeti allora  :D grazie mille

Offline fsurfing

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.484
    • Mostra profilo
Re: Variabili
« Risposta #10 il: 29 Marzo 2012, 11:48:31 »
Citazione
Ciao a tutti....volevo chiedervi se è possibile settare una variabile che conservi un valore anche dopo che il programma viene chiuso.
Nello specifico vorrei fare in modo che quando un utente apre il programma per la prima volta compaia un messaggio che poi non compare più le volte successive.

siccome  sono tifoso delle cose semplici , userei settings nel tuo caso..

Codice: gambas [Seleziona]

public sub form_open()

if settings["usr/pippo",""]="" then
   message.info("la variabile non è ancora configurata!")
else
  print "variabile configurata"
  nome_variabile=settings["usr/pippo",""]
end if

end

public sub vattelapesca()
  ' qui effettui il salvataggio della variabile per la prossima apertura del programma
   nome_variabile=   settings["usr/pippo"]
   settings.save
end



Offline Ferdinando88

  • Gamberetto
  • *
  • Post: 44
    • Mostra profilo
Re: Variabili
« Risposta #11 il: 29 Marzo 2012, 22:29:25 »
Devo dire che è una bella soluzione....grazie  :D