Dio mio come sono arrugginito :-)
Facciamo conto che abbia una classe, che mi serve per semplificare la creazione di file tipo gli ".ini" (tra l'altro, avevo provato a usare gb.settings, ma con quelli non dei settaggi classici, ma in cartelle diverse, non riuscivo a creare il file, e non a modificarlo se esisteva gia'). Per farla semplice, in questa classe c'e' una struttura che definisco globalmente per essere usata in un array usato tramite i metodi della classe
Public Struct IniStruct
sez As String
chv As String
res As String
End Struct
Public myini As New IniStruct[]
e poi la uso in molti posti, creando un array e aggiungendoci i vari elementi
Public Sub IniSet(sezione As String, chiave As String, nuovovalore As Variant)
Dim i As IniStruct
Dim inew, inew2 As New IniStruct
For Each i In myini
If i.sez = sezione And i.chv = chiave Then
i.res = nuovovalore
Return
Endif
Next
->
inew.sez = sezione
inew.chv = "app"
inew.res = "myappname"
myini.Add(Inew)
inew2.sez = sezione
inew2.chv = chiave
inew2.res = nuovovalore
myini.Add(Inew2)
<-
Questa parte di codice, in pratica, modifica l'array che poi sara' salvato, se non esiste il file invece crea proprio l'array. Per funzionare, funziona, ma trovo orribile la cosa di inserire due variabili /(la parte tra -> e <- del codice), altrimenti non funziona: se riuso inew, vengono settati due valori uguali. Ma ci sara' un altro sistema, se dovessi inserire cento valori, mica potro' mettere cento variabili... allora immagino la dovrei azzerare...
...ad ogni modo, questo semplice esempio può essere utile ? :-\
Public Struct IniStruct
sez As String
chv As String
res As String
End Struct
Public Sub Main()
Dim myini As New IniStruct[]
' Passa per "indirizzo" il simbolo della Struttura:
IniSet(myini, "aaa", "bbb", "cccc")
' Fa una semplice verifica esemplificativa:
Print myini[899].sez
Print myini[899].chv
Print myini[899].res
End
Public Sub IniSet(strini As IniStruct[], sezione As String, chiave As String, nuovovalore As Variant)
Dim i, inew As IniStruct
Dim c As Short
' For Each i In strini
' If (i.sez = sezione) And (i.chv = chiave) Then
' i.res = nuovovalore
' Return
' Endif
' Next
For c = 1 To 1000 ' Crea ad esempio mille variabili (Oggetti) del tipo Struttura "IniStruct"
inew = New IniStruct
inew.sez = sezione & CStr(c)
inew.chv = chiave & CStr(c)
inew.res = nuovovalore & CStr(c)
' Inserisce la variabile - poco sopra creata - del tipo Struttura "IniStruct" nell'array del medesimo tipo Struttura:
strini.Push(inew)
Next
End
però mi devi promettere di non ridere
Non rido, anche perche' ne sai piu' di me :-) Ora mi ci vorra' un po' di tempo per controllare lo svolgimento delle procedure (non tanto per quello che stavo facendo qui, ma per altri usi in cui varrebbe la pena). Unica cosa che ti chiedo sarebbe: ma il file ini dove salvi e' nella location standard ./config/gambas/nomeapp? Perche' quando facevo le prove con settings, dovevo usare la classe settings, tipo (ma senza giurarlo che ho provato in molti modi e non ricordo quale)
my = New Settings(nomefile)
my[data/app] = "testodascrivere"
my.save