Italian Scrivere ordinatamente su un file INI

AlpVir

Well-Known Member
Licensed User
Longtime User
Tramite la sub
B4X:
Sub WriteIni(mykey As String,myvalue As String,fPath As String,filename As String)
    Dim Map1 As Map
    Map1.Initialize
    If File.Exists(fPath,filename) Then
    Else
        File.WriteMap(fPath, filename, Map1)  'to create it if not exist
    End If
    Map1 = File.ReadMap(fPath,filename)
    Map1.Put(mykey, myvalue)
    File.WriteMap(fPath, filename, Map1)
End Sub

registro una dopo l'altra un certo numero di chiavi con i loro rispettivi valori.
Va tutto bene però le linee del file INI non vengono registrate nell'ordine che sarebbe logico aspettarsi.
Ad esempio
Citta3=MILANO
Citta1=TORINO
Citta2=PARMA
mentre io avevo chiaramente scritto
B4X:
WriteIni("Citta1","TORINO",File.DirRootExternal,NomeFileIni)
WriteIni("Citta2","PARMA",File.DirRootExternal,NomeFileIni)
WriteIni("Citta3","MILANO",File.DirRootExternal,NomeFileIni)
La mia è solo una questione di ordine, non di mancato funzionamento di qualcosa.
C'è qualcuno che sa spiegare il perchè di questo "disordine" nella scrittura del file ?
Ed anche come ovviarvi.
Ho provato ad inserito un DoEvents fra una riga e l'altra ma ... nulla !
Grazie per l'attenzione
 

AlpVir

Well-Known Member
Licensed User
Longtime User
Che significa "dall'esterno" ?
Io, in Activity_Create" creo il file (se non esiste) e poi ci scrivo sopra in quel certo ordine ("Citta1", "Citta2", ecc.)
Disordinatamente, come ho detto.
 

LucaMs

Expert
Licensed User
Longtime User
seconda occhiata... a me li legge in ordine!

B4X:
    Private NomeFileIni As String = "FileIni.txt"
    If FirstTime Then
        WriteIni("Citta1","TORINO",File.DirRootExternal,NomeFileIni)
        WriteIni("Citta2","PARMA",File.DirRootExternal,NomeFileIni)
        WriteIni("Citta3","MILANO",File.DirRootExternal,NomeFileIni) 
    End If 
 
    Dim Map1 As Map
    Map1.Initialize
    Map1 = File.ReadMap(File.DirRootExternal,NomeFileIni)
 
    For I = 0 To Map1.Size -1
        Log(MAP1.GetKeyAt(I) & " - " & Map1.GetValueAt(I))
    Next


LOG:

** Activity (main) Create, isFirst = true **
Citta1 - TORINO
Citta2 - PARMA
Citta3 - MILANO
** Activity (main) Resume **
 

AlpVir

Well-Known Member
Licensed User
Longtime User
Oh bella !
A me li scrive disordinatamente. L'ho verificato aprendo il file con un qualsiasi FileEditor.
Come detto la cosa non ha soverchia importanza dal punto di vista funzionale. Tuttavia potrebbe capitare in futuro, in altre app più complesse, di impazzire alla ricerca di errori dovuti appunto a questo "disordine".
 
Top