Italian File.ReadList

toro1950

Active Member
Licensed User
Ho un file in memoria che contiene i dati di un database, i campi sono divisi da una virgola, i record fa un endofline,
il primo dato contiene il numero dei record, per ricreare il database utilizzo il seguente codice
B4X:
      Dim L2 As List
    fl=nomefile
     Dim Query As String
   
    Dim tst() As String
    L2.Initialize

    If File.Exists(xui.DefaultFolder,fl) Then
        L2 = File.ReadList(xui.DefaultFolder,fl)
        r= L2.Get(0)
          
        For x = 1 To r
         
           tst = Regex.Split(",",L2.Get(x))
                  
           Edit1.Text=tst(1)
           Edit2.Text= tst(2)
           Edit3.Text= tst(3)
Query = "INSERT INTO xxxxx VALUES (?, ?, ?, ?)"
'ecc ecc
next
/CODE]
Con B4A su androide funziona benissimo, mentre con B4i esce senza avviso, dopo varie prove ho capito che il problema è che la variabile r non viene associata ,
se inserisco msgbox (L2.Get(0),"") il messaggio mi restituisce il testo con il numero dei record, in questo 2015. Se io ad r associo direttamente 2015 il database viene creato
normalmente in un paio di minuti. Ho fatto un ulterire prova: in ambdue ho inserito Msgbox(L2,"") e riscontro alcune diversità:
su androide inizia così [☒ 2015,(,Rosssi ecc   su iphone <B4IList:("2015","(,Rossi ecc. L'unica prova che non ho fatto è creare il file su Mac.
sul linguaggio che uso sul pc e su Mac per associare una variabile int ad un testo si utilizza r=Val(L2.Get(0) esite qualcosa di simile su B4X? 
ho provato ad aggiungere Trim al testo ma non cambia nulla. In altre parti del app l'associazione variabile int con stringa funziona, 
sicuramente L2.Get(0) contiene qualcosa di strano
 

Sagenut

Expert
Licensed User
Longtime User
Senza qualcosa da provare è difficile capire cosa possa essere.
Giusto per fare qualcosa prova così
B4X:
r= L2.Get(0).As(Int)
 

Sagenut

Expert
Licensed User
Longtime User
Oltre a questo mi viene da pensare che potresti evitare di scrivere il numero dei record come primo valore e sfruttare la Size della lista.
B4X:
For x = 0 to L2.Size - 1
 

Sagenut

Expert
Licensed User
Longtime User
Puoi provare anche subito
B4X:
For x = 1 To L2.Size - 1
commentando la linea dove assegni r.
Così non devi rifare i Files almeno per ora.
 

toro1950

Active Member
Licensed User
Grazie Sagenut, ho provato senza il nr di record come mi hai consigliato e va benissimo, grazie di nuovo
 
Cookies are required to use this site. You must accept them to continue using the site. Learn more…