Gambas-it

Archivi (sola lettura) => Programmazione (Gambas 2) => Topic aperto da: Lux - 12 Marzo 2009, 22:07:30

Titolo: Come salvare dei valori
Inserito da: Lux - 12 Marzo 2009, 22:07:30
Ciao a tutti! Avrei un quesito da porvi, diciamo che ho dei numeri e vorrei che all'avvio gambas li visualizzi uno per ogni textbox.
questi numeri però li vorrei inserire nei textbox che possiedo nel mio form e poi salvarli. L'operazione di salvataggio come la imposto? Devo dire a gambas di scrivere i numeri in un file di testo o esiste un altro metodo?
Ciao.
Titolo: Re: Come salvare dei valori
Inserito da: - 12 Marzo 2009, 22:22:26
cerca "settings" nella guida o nel forum
Titolo: Re: Come salvare dei valori
Inserito da: Lux - 12 Marzo 2009, 22:48:07
mmmm, ho dato uno sguardo ma non ho capito molto......
Titolo: Re: Come salvare dei valori
Inserito da: leo72 - 12 Marzo 2009, 23:11:08
Ci sono sempre i sempiterni file di testo... ;-)
Titolo: Re: Come salvare dei valori
Inserito da: md9327 - 13 Marzo 2009, 01:54:50
Allora è inutile proporre un xml...

Come ha suggerito leo, puoi creare e leggere un tuo file di testo, dove in ogni riga è presente la stringa da caricare nella textbox. Questo è il metodo più semplice, dipende cosa vuoi veramente ottenere, e se hai idea di implementazioni future...
Titolo: Re: Come salvare dei valori
Inserito da: Ceskho - 13 Marzo 2009, 16:42:29
A mio parere più semplice di setting per queste cose non c'è nulla di nulla di nulla!
Titolo: Re: Come salvare dei valori
Inserito da: - 13 Marzo 2009, 18:16:25
già già ... il più veloce semplice e pulito
senza star li OPEN READ CLOSE
Titolo: Re: Come salvare dei valori
Inserito da: Lux - 13 Marzo 2009, 20:46:54
Raga, grazie mille per il vostro aiuto, ma non dimenticate che non sono un esperto, anzi ne so ben poco. io credo che per le mie conoscenze la cosa più semplice sia la creazione di un file di testo con i numeri, ma mi piacerebbe imparare anche l'uso di un xml e del settings....
vi armate di un po' di pazienza e mi date una mano?
ciao e grazie mille!
Titolo: Re: Come salvare dei valori
Inserito da: - 14 Marzo 2009, 16:35:33
Piglia questo .... l'ho preso da un forum inglese ..
 :evil:
Titolo: Re: Come salvare dei valori
Inserito da: Ceskho - 14 Marzo 2009, 16:50:30
@ giac_fab

Ti ricordo che se le cose ti irritano puoi sempre non rispondere..qui si aiutano tutti..esperti e non...

@ lux

Guarda, l'uso di setting è facilissimo...prima di tutto abiliti il componente gb.setting. Dopodiche usi questo codice:

Per saòvare i valori:

Codice: [Seleziona]
settings["gruppo_variabili1/variabile1"]= valore_variabile1
settings["gruppo_variabili1/variabile2"]= valore_variabile2

settings["gruppo_variabili2/varibile_n"]= valore_variabile_n


etc...

Dopodichè dai

Codice: [Seleziona]
settings.save 
 

che ti salva i cambiamenti.

Quando poi vuoi rileggerei file dai:
Codice: [Seleziona]

valore_voluto = settings["gruppo_variabili1/variabile1"]


Il file di setting verrà salvato nella tua home nella cartella nascosta gambas/nome_tuo_progetto.

Spero di essere stato chiaro...nel caso chiedi pure!
Titolo: Re: Come salvare dei valori
Inserito da: Lux - 14 Marzo 2009, 17:03:37
Grazie mille! Faccio subito una prova, vi tengo informati.
Titolo: Re: Come salvare dei valori
Inserito da: - 14 Marzo 2009, 17:41:08
@ cesco
Mi pare sia necessario dichiarare
NEW settings(path) per inizializzare il settings ....
Titolo: Re: Come salvare dei valori
Inserito da: md9327 - 14 Marzo 2009, 21:32:58
Settings è un'oggetto dinamico, come la maggioranza di quelli presenti in Gambas.

La dichiarazione viene fatta come hai tu scritto:
Codice: [Seleziona]

DIM hSetting AS NEW Setting


Una volta creato, puoi aggiungere elementi:
Codice: [Seleziona]

hSetting["Gruppo/Elemento"] =


Tieni conto che Setting capisce il tipo di dato che deve scrivere, per cui le stringhe verranno racchiuse tra doppi apici, i numeri no. Le date vengono convertite in stringa.

Se il "Gruppo" non esiste, lo crea; se "Elemento" non esiste, lo crea sotto il "Gruppo".

La lettura avviene in modo inverso:
Codice: [Seleziona]

= hSetting["Gruppo/Elemento"]


Nota importante:
una volta aperto un'oggetto Setting, la scrittura viene gestita in memoria, e salvata al termine dell'uso, o con il metodo Save(); è da tener presente che non è possibile eliminare gruppi o elementi una volta scritti, o impostati in memoria. Nel caso si volesse cambiare la struttura del file risultante, sarà necessario eliminare quello esistente, riscrivendolo poi nuovamente con la nuova logica.
A seguito di questo, qualche tempo fà, ho scritto alcune classi ad-hoc, che simula il comportamento di Setting, ma la gestione viene fatta esclusivamente in memoria, salvando poi il risultato sul file alla fine, e con l'apposito metodo; inoltre permette di aggiungere ed eliminare elementi e attributi, come se fosse un array (e in effetti ci si avvicina di molto). Infine ha alcuni attributi che lo rendono più avanzato.
Stessa cosa l'ho fatta per la gestione dei file XML (le classi sono molto simili)...
Questi oggetti l'ho inseriti in pgDesigner, e fino ad ora non mi hanno dato alcun problema, neppure con file di grosse dimensioni (>10M).
Dato che in queste classi ho adottato alcuni miei accorgimenti, dovrò fare un pò di pulizia, e a breve li metterò a disposizione qui sul sito...

Bye
Titolo: Re: Come salvare dei valori
Inserito da: - 14 Marzo 2009, 22:53:20
:cappello:
Titolo: Re: Come salvare dei valori
Inserito da: Ceskho - 15 Marzo 2009, 12:20:41
Citazione

giac_fab ha scritto:
@ cesco
Mi pare sia necessario dichiarare
NEW settings(path) per inizializzare il settings ....


personalmente ho sempre omesso la dichiarazione ed ha sempre funzionato...
Titolo: Re: Come salvare dei valori
Inserito da: Gaspare - 16 Giugno 2009, 21:33:52
ma volendo usare dei semplici file di testo come si fa ad aggiungerli al progetto in modo che vengano poi aggiunti ai vari pacchetti di distribuzione?
mi spiego meglio...
ho sviluppato un programmino che fa da traduttore ad n vocaboli per un giochino on-line. nel programma ho usato quindi dei file di testo per i termini creando i vari file "linguaggio".
da esplora progetto i file sono perfettamente visibili ma andando a creare il pacchetto (sia di sorgenti che di distribuzione) questi non vengono inseriti.
come fare?
Titolo: Re: Come salvare dei valori
Inserito da: fsurfing - 16 Giugno 2009, 22:01:26
tutti i file e cartelle presenti nella tua cartella di progetto vengono imglobati nell' eseguibile di gambas

se si tratta di immagini queste possono essere richiamate direttamente senza lcun problema semplicemente dando il percorso relativo

ad esempio hai creato una cartella immagini all' interno della cartella di progetto in sui salvi le  immagini da utilizzare nel tuo programma

queste le puoi richiamare direttamente con

dim immagine as image

immagine=image.load("immagini/nomeimmagine")

per i file la cosa invece non si può fare così semplicemente ma ti conviene fare così:

poniamo di avere una cartella chiamata testi (dentro la cartella di progetto) con tutti i tuoi file di testo

all' avvio del form principale effettui un controllo per verificare se il programma è già stato avviato altre volte oppure no, nel caso non sia mai successo effettui la copia dei file di testo in una cartella sul disco
Codice: [Seleziona]

PUBLIC SUB Fmain_load()

if not exist(user.home & "/.nometuoprogramma") then
  'la cartella nascosta non esiste quindi il prog non è mai stato avviato
   mkdir (user.home & "/.nometuoprogramma") 'crea la cartella nascosta
   copy "testi/testo1.txt" TO user.home & "/.nometuoprogramma"'copia il 1° file
   ------
   ------
   copy "testi/teston.txt" TO user.home & "/.nometuoprogramma"
endif

a questo punto potrai utilizzare i tuoi file di testo ricordandoti però che in tutto il programma dovrai lincarli con il percoso assoluto

ad esempio
Codice: [Seleziona]

dim pippo aS STRING

pippo=file.load(user.home & "/.nometuoprogramma/testo1.txt")

Titolo: Re: Come salvare dei valori
Inserito da: Gaspare - 16 Giugno 2009, 22:28:15
forse mi sono espresso male io ma i file di testo non riesco proprio ad implementarli al progetto per la sua distribuzione... puoi provare il traduttore (ancora in fase di lavorazione) che ti allego?
grazie comunque per avermi risposto :)
Titolo: Re: Come salvare dei valori
Inserito da: fsurfing - 16 Giugno 2009, 22:58:03
cosi dovrebbe andare
ho provato anche con i deb

il problema era quello che ho citato prima
Titolo: Re: Come salvare dei valori
Inserito da: Gaspare - 17 Giugno 2009, 18:09:24
ottimo... grazie mille.
spero sia utile anche ad altri come esempio pratico :)

p.s. non capivo che veniva creata una cartella nascosta, ecco perchè non vedevo i file linguaggio :D
Titolo: Re: Come salvare dei valori
Inserito da: ira83 - 11 Settembre 2009, 02:30:46
faccio un up ho fatto delle prova:

Codice: [Seleziona]

PUBLIC SUB Form_Open()

'TextBox1.text = var.editor
'TextBox2.text = var.dir
TextBox1.Text = settings["gruppo_variabili1/variabile1"]
TextBox2.text = settings["gruppo_variabili1/variabile2"]
END


PUBLIC SUB Button1_Click()

'  var.editor = Textbox1.text
'  var.dir = Textbox2.text
settings["gruppo_variabili1/variabile1"] = TextBox1.text
settings["gruppo_variabili1/variabile2"] = TextBox2.text
settings.save
  TextBox1.Enabled = FALSE
      TextBox2.Enabled = FALSE
        Button1.Enabled = FALSE
END

PUBLIC SUB Button2_Click()

  pre.Close()

END


ma non capisco dove sbaglio...

aperto il form devo stampare il contenuto default di due variabili nelle textbar, poi se viene cambiato lo devo salvare come default in modo che al riavvio del programma resti quello modificato..
Titolo: Re: Come salvare dei valori
Inserito da: Ceskho - 11 Settembre 2009, 03:47:16
Quale problema ti da in particolare? Devi spiegarci le cose per esserti di aiuto.

Comunque hai dimenticato di dichiarare setting come classe

Codice: [Seleziona]
DIM NewSetting AS NEW Setting


e poi usi il tuo codice:

Codice: [Seleziona]

PUBLIC SUB Form_Open()

TextBox1.Text = settings["gruppo_variabili1/variabile1"]
TextBox2.text = settings["gruppo_variabili1/variabile2"]
END


PUBLIC SUB Button1_Click()

settings["gruppo_variabili1/variabile1"] = TextBox1.text
settings["gruppo_variabili1/variabile2"] = TextBox2.text
settings.save
  TextBox1.Enabled = FALSE
  TextBox2.Enabled = FALSE
  Button1.Enabled = FALSE
END
Titolo: Re: Come salvare dei valori
Inserito da: ira83 - 11 Settembre 2009, 10:02:38
I Problemi sono nel dim xke ottengo "Unexpected DIM alla linea 2 in pre.class"
e in quella riga ho messo quello che mi hai detto tu cioè
DIM NewSetting as new Setting

e da proprietà ho abilitato la componente gb.setting
Titolo: Re: Come salvare dei valori
Inserito da: - 11 Settembre 2009, 11:58:34
il dim si può mettere solo all'interno di una SUB! e in questo caso non avrebbe albun senso per i motivi citati miriadi di volte

devi usare PUBLIC o PRIVATE o anche nulla ( e con il nulla non mi ricordo se viene considerata PUBLIC o PRIVATE)
Titolo: Re: Come salvare dei valori
Inserito da: fsurfing - 11 Settembre 2009, 12:20:42
non serve dichiarare il settings è già attivo abilitando il componente in menu proprieta.


non hai scritto comunque nel primo post di questa pagina quale è il problema.

il codice sembrerebbe corretto

unico appunto, se al primo avvio le variabili
Citazione

settings["gruppo_variabili1/variabile1"] settings["gruppo_variabili1/variabile2"]

non sono presenti nel file di settings potrebbe generarti errore, per evitare ciò ti conviene in lettura impostare un valore di default che viene caricato se non è ancora presente alcun settaggio :
Codice: [Seleziona]

PUBLIC SUB Form_Open()

'TextBox1.text = var.editor
'TextBox2.text = var.dir
TextBox1.Text = settings["gruppo_variabili1/variabile1",valore_di_default1]
TextBox2.text = settings["gruppo_variabili1/variabile2",valore_didefault2]
END


PUBLIC SUB Button1_Click()

'  var.editor = Textbox1.text
'  var.dir = Textbox2.text
settings["gruppo_variabili1/variabile1"] = TextBox1.text
settings["gruppo_variabili1/variabile2"] = TextBox2.text
settings.save
  TextBox1.Enabled = FALSE
      TextBox2.Enabled = FALSE
        Button1.Enabled = FALSE
END