@ 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:
settings["gruppo_variabili1/variabile1"]= valore_variabile1
settings["gruppo_variabili1/variabile2"]= valore_variabile2
settings["gruppo_variabili2/varibile_n"]= valore_variabile_n
etc...
Dopodichè dai
che ti salva i cambiamenti.
Quando poi vuoi rileggerei file dai:
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!
Settings è un'oggetto dinamico, come la maggioranza di quelli presenti in Gambas.
La dichiarazione viene fatta come hai tu scritto:
DIM hSetting AS NEW Setting
Una volta creato, puoi aggiungere elementi:
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:
= 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
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
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
dim pippo aS STRING
pippo=file.load(user.home & "/.nometuoprogramma/testo1.txt")
faccio un up ho fatto delle prova:
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..
Quale problema ti da in particolare? Devi spiegarci le cose per esserti di aiuto.
Comunque hai dimenticato di dichiarare setting come classe
DIM NewSetting AS NEW Setting
e poi usi il tuo codice:
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
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
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 :
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