Italian Disordine in un file INI

AlpVir

Well-Known Member
Licensed User
Le seguenti istruzioni
B4X:
Comune.WriteIni("URL1","www.liceocuneo.it/~orario",File.DirRootExternal,NomeFileIni) 
    Comune.WriteIni("URL2","www.itcbonelli.it/~orario",File.DirRootExternal,NomeFileIni)
    Comune.WriteIni("URL3","www.nome sito della scuola/cartella per orario",File.DirRootExternal,NomeFileIni)
    Comune.WriteIni("URL4","www.nome sito della scuola/cartella per orario",File.DirRootExternal,NomeFileIni)
scrivono in un file inizi i valori desiderati. Il difetto è che non lo scrivono in ordine.
URL3=www.nome sito della scuola/cartella per orario
URL2=www.itcbonelli.it/~orario
URL1=www.liceocuneo.it/~orario
URL4=www.nome sito della scuola/cartella per orario
Si può rimediare a questo disordine, non significativo dal punto di vista del funzionamento, ma sempre ... disordine è ?
Grazie per l'attenzione.
 

udg

Expert
Licensed User
Ciao,

non ricordando alcun "writeini", ho cercato nel forum ed ho trovato questo riferimento.
Se è ciò che stai usando, noterai che di fatto utilizza una Map per memorizzare gli elementi e Map, per definizione, non mantiene l'ordine di inserimento; quindi mi spiace concludere che con tali funzioni non sarà possibile avere un file *.ini "ordinato".

Edit: per "aggirare" il problema potresti trasformare le coppie key/value in stringhe del tipo "key=value" e registrare di conseguenza le stringhe risultanti. Ovviamente in lettura potresti effettuare l'operazione inversa (cerchi il simbolo di uguale e dividi key da value) per alimentare una Map nel caso sia l'oggetto utilizzato nel resto del programma.

udg
 

maXim

Active Member
Licensed User
Ciao AlpVir,

dai un'occhio alla classe fINI della libreria db2000 eXtrafunctions (disponibile per B4A, B4J e Java)... la libreria contiene altre classi di utilizzo generale, magari possono essere anche queste di tuo interesse... ;)
 

AlpVir

Well-Known Member
Licensed User
@udg Sinceramento non ho capito il tuo suggerimento. Potresti essere più chiaro ?
@maXim Proverò con questa tua libreria ma ho l'impressione che non fa il caso mio
 

udg

Expert
Licensed User
Ciao, dai un'occhiata alle semplici funzioni di questo post.

Il mio suggerimento era quello di "riscriverti" le funzioni "ReadIni" e "WriteIni" utilizzando dietro le quinte un WriteString (o anche un WriteList se i dati di partenza sono in quella forma) invece del WriteMap.
In pratica avresti:
B4X:
Comune.MyNewWriteIni("URL1","www.liceocuneo.it/~orario",File.DirRootExternal,NomeFileIni) 
...
sub MyNewWriteIni (key as string, value as string, fpath as string, f name as string)
dim s as string
s = key&"="&values  ' questo produce righe del tipo URL1=www.liceocuneo.it/~orario
'e qui vai di WriteString
end sub
Personalmente lascerei il mondo così come è ora, con l'utilizzo del Map e il file *.ini "disordinato" perché ti evita di dover manipolare i dati di partenza e rende molto più semplice il loro utilizzo una volta letti dallo storage.

udg
 

LucaMs

Expert
Licensed User
Personalmente lascerei il mondo così come è ora, con l'utilizzo del Map e il file *.ini "disordinato"
Condivido; è "solo" il tuo occhio umano che lo digerisce male.

Male che vada, se in futuro vorrai cambiare, potrai sempre rileggerlo nella map e salvarlo in maniera diversa.
 

AlpVir

Well-Known Member
Licensed User
Accetto il suggerimento di LucaMs (lasciare per il momento le cose come sono, visto che funzionano). Se in futuro il "disordine" fosse eccessivo potrò probabilmente rileggere il file, riordinare alfabeticamente le singole righe e risalvarlo.
 

LucaMs

Expert
Licensed User
Veramente la constatazione ed il suggerimento erano di @udg, io li ho soltanto condivisi; ma in fondo è giusto così, che venga riconosciuto il merito a me, dato che "merito" molto più di lui :p.

Scherzo, ovviamente (anzi, approfitto per salutarlo: HHHUUUHHH).
 

udg

Expert
Licensed User
Uhhuuuhhhhh

Condivido la condivisione ed anche che il merito possa andare a chi come te è sempre pronto ad aiutare gli altri. Senza la tua presenza, qui sarebbe un mortorio .
 

LucaMs

Expert
Licensed User
Uhhuuuhhhhh

Condivido la condivisione ed anche che il merito possa andare a chi come te è sempre pronto ad aiutare gli altri. Senza la tua presenza, qui sarebbe un mortorio .
"Troooppo buono"; allora meriti due cioccolatini, anziché uno :)
 
Top