Italian "Disordine" in un file INI

Discussion in 'Italian Forum' started by AlpVir, Jun 25, 2015.

  1. AlpVir

    AlpVir Well-Known Member Licensed User

    Premessa: la sub CreaFileINI crea un file di testo

    Code:
    Sub CreaFileINI
       WriteIni(
    "Autore",Autore & " - " & SitoMio ,File.DirRootExternal,NomeFileIni)
       WriteIni(
    "Versione",VersioneNo,File.DirRootExternal,NomeFileIni)
       WriteIni(
    "URL1",Sito & "ora1314.xml",File.DirRootExternal,NomeFileIni) 
       WriteIni(
    "URL2",Sito & "ora1415.xml",File.DirRootExternal,NomeFileIni) 
       WriteIni(
    "URL3",Sito & "ora1516.xml",File.DirRootExternal,NomeFileIni)
       WriteIni(
    "URL4",Sito & "ora1617.xml",File.DirRootExternal,NomeFileIni)
       WriteIni(
    "URL5",Sito & "ora1718.xml",File.DirRootExternal,NomeFileIni) 
       WriteIni(
    "URL6",Sito & "ora1819.xml",File.DirRootExternal,NomeFileIni)  
       WriteIni(
    "NumeroURL","2",File.DirRootExternal,NomeFileIni)
       WriteIni(
    "UltimoURL",Sito & "ora1415.xml",File.DirRootExternal,NomeFileIni) 
       WriteIni(
    "VediInizioOre","N",File.DirRootExternal,NomeFileIni) 
       WriteIni(
    "QualeModalitaImportazione","1",File.DirRootExternal,NomeFileIni)
    End Sub

    Code:
    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


    Questo è il file di testo creato :


    Stranamente le chiavi URL NON sono nell'ordine da 1 a 6.
    Ho finora verificato che questo non ha nessuna importanza per il funzionamento dell'app ma se le chiavi fossero - poniamo - un numero sensibilmente maggiore sarebbe difficile ad un umano leggere una specifica voce ed inoltre potrebbe, in un ipotetico caso, provocare qualche malfunzionamento.
    In ogni caso come mai questo "disordine" ? Ci si potrebbe ovviare ? E se sì come ?
    E' poco più di una curiosità, ma grazie comunque per l'attenzione.
     
  2. LucaMs

    LucaMs Expert Licensed User

    Davvero strano.

    Hai provato anche con File.WriteList, anziché Map?

    La soluzione migliore, come sempre, è un bel DB.
     
  3. LucaMs

    LucaMs Expert Licensed User

    Suppongo che il motivo del post sia solo per sottolineare lo strano comportamento di WriteMap e ReadMap (il codice non è certo ottimizzato e invece di:
    "If File.Exists(fPath,filename) Then" senza azioni, "If Not(File.Exists(fPath,filename)) Then").

    Cmq, si può usare KeyValueStore (in alternativa ad un bel DB ;)).
     
  4. AlpVir

    AlpVir Well-Known Member Licensed User

    In verità non mi faccio eccessivi problemi. Il codice funziona, non sarà super ottimizzato, ma funziona.
    Volevo solo render nota la situazione e verificare se qualcuno è a conoscenza di una spiegazione per lo strano fenomeno, senza perderci troppo tempo.
    Il db non è giustificato, a mio parere, da solamente una dozzina di informazioni (tante quante sono le righe del file INI) con un solo record.
     
  5. LucaMs

    LucaMs Expert Licensed User

    Uhm... se si avesse un modulo (o una classe) per creare al volo un db anche per poche informazioni sarebbe meglio (se trovo il tempo...!)

    Non penso ci siano soluzioni alla faccenda Map, perché non vedo come altrimenti potresti scriverci/leggerne i dati. Prova a chiedere nel forum comune, vediamo se Erel ti risponde.
     
  6. udg

    udg Well-Known Member Licensed User

    Ciao a tutti,

    è una peculiarità dell'implementazione del Map.
    Vedi la sua definizione.

    udg
     
    AlpVir likes this.
  7. AlpVir

    AlpVir Well-Known Member Licensed User

    Quindi la chiave di tutto sarebbe nella frase :
    Grazie
     
  8. LucaMs

    LucaMs Expert Licensed User

    Non la chiamerei proprio "chiave"... magari "chiavica" :D
     
  9. maXim

    maXim Active Member Licensed User

Loading...