Italian Leggere e scrivere un txt

xarcius

Member
Salve ragazzi, sono alle prime armi, ma conoscendo già il Visual Basic.Net mi so muovere. Questa potrebbe sembrare una domanda,ma ho un problema. Sto creando un piccola applicazione di lettura e scrittura con i txt.
Dai tutorial presenti sul sito ho preso qusto
B4X:
 Dim TextWriter As TextWriter
      TextWriter.Initialize(File.OpenOutput(File.DirInternal, EditText1.Text & ".txt", False))
      TextWriter.WriteLine(EditText2.Text)
      TextWriter.Close()
      Msgbox("Salvato","Successo")
      EditText1.Text=""
      EditText2.Text=""

e quest'altro

B4X:
 Dim TextReader1 As TextReader
       TextReader1.Initialize(File.OpenInput(File.DirInternal, EditText3.Text & ".txt"))
       Dim line As String
       line = TextReader1.ReadLine    
       Do While line <> Null
           Log(line) 'write the line to LogCat
           line = TextReader1.ReadLine
         Msgbox("Ne hai: " & line,"Trovato")
       Loop
       TextReader1.Close

Il problema è: il codice per salvare, a quanto pare funzioni. Il problema nasce quando devo leggere il txt. Infatti quando eseguo il codice di lettura "line" invece di darmi ciò che è scritto nel txt mi da come risultato "null" . Perchè?
Grazi a tutti :)

ps: consigliate di fare un db, dato che ci saranno molti txt?
 

arenaluigi

Well-Known Member
Licensed User
Longtime User
Ciao,
prova con questo codice a vedere cosa hai scritto nel file:

B4X:
Dim TReader As TextReader
Dim out As String
out = TReader.ReadAll
La variabile out conterrà tutto il file.
Secondo me quando tu usi questa istruzione;
B4X:
TextWriter.WriteLine(EditText2.Text)
Scrivi il testo corretto ed inoltre aggiunge un carattere di nuova riga ed un allineamento a sinistra(CRLF).

Nel ciclo di lettura la prima msgbox che valore ti da ?
 

xarcius

Member
ti ringrazio con il tuo codice mi legge ciò che ho salvato

Nel msgbox della lettura line mi dava come risultato "null", cioè usciva scritto:
"Ne hai: null"
Lo stesso problema me lo dava anche se usavo solo Write

Grazie ancora :)
 

magoandroid

Member
Licensed User
Longtime User
Prova questo codice (Un Layout con 2 bottoni e 2 EditText).
Con il bottone btnSalva, scrive 10 volte il contenuto del tex1, nel file di interesse.
Con il bottone btnLeggi, legge le dimensioni del file ed il suo contenuto, riportando il tutto nel txt2.
Buona giornata.

B4X:
Sub Process_Globals
   Dim ScriviTxt As TextWriter
   Dim LeggiTxt As TextReader
End Sub

Sub Globals
   Dim btnSalva As Button      
   Dim btnLeggi As Button
   
   Dim txt1 As EditText
   Dim txt2 As EditText
End Sub

Sub Activity_Create(FirstTime As Boolean)
   Activity.LoadLayout("frmMain")
   
   If File.ExternalWritable = False Then        
      Msgbox("Impossibile scrivere sulla card!", ".:ATTENZIONE:.")        
      Return 
   Else
      Msgbox("E' possibile scrivere sulla card!", ".:ATTENZIONE:.")
   End If    
End Sub

Sub Activity_Resume

End Sub

Sub Activity_Pause (UserClosed As Boolean)

End Sub

Sub btnSalva_Click
   ScriviTxt.Initialize(File.OpenOutput(File.DirRootExternal, "miei_dati.txt", True))

   For i = 1 To 10
      ScriviTxt.WriteLine(txt1.text & " n: " & i)
   Next
   ScriviTxt.Close 
End Sub
Sub btnLeggi_Click
      
   If File.Exists(File.DirRootExternal, "miei_dati.txt") = False Then
      Msgbox("Non ho trovato il file da leggere!", ".:ATTENZIONE:.")        
      Return
   End If
   
   Dim strLinea As String
   
   LeggiTxt.Initialize(File.OpenInput(File.DirRootExternal, "miei_dati.txt")) 
   
   txt2.Text = "Dimensioni file: " & File.Size(File.DirRootExternal, "miei_dati.txt") & " bytes." & CRLF 
   strLinea = LeggiTxt.ReadLine   

   Do While strLinea <> Null        
      txt2.Text = txt2.text & strLinea & CRLF       
      strLinea = LeggiTxt.ReadLine      
   Loop    
   LeggiTxt.Close
End Sub
 

Roberto Tsolakis

Member
Licensed User
Longtime User
Sdcard

Scusate la domanda stupida. Ma la SDCARD del ADV dove la trovo sul mio pc ?
:BangHead:


Forse ho trovato :
C:\Users\Nome Utente\.android\avd\Nome dispositivo avd.avd\sdcard.img
Ora il problema è come leggere ed inserire i dati (magari un txt) ?
Ho provato con un lettore di file ISO, ma mi sa che è proprietario.

Direi che la cosa è molto più semplice ... caricarla da ADD FILES del modulo principale di B4A e portarla da

If File.Exists(File.DirRootExternal,"nomefile.txt")=False Then
File.Copy(File.DirAssets,"nomefile.txt",File.DirRootExternal,"nomefile.txt")
End If
 
Last edited:

Fabio68

Member
Licensed User
Salve, sto cercando di scaricare i dati di una listview in una edit text mantenendoli in colonna ma senza successo.... ringrazio in anticipo chi abbia la cortesia di aiutarmi. Provengo da visual.net e ho appena iniziato a cimentarmi con b4a, per molti versi i due linguaggi sono simili e l'app che sto costruendo funziona ma non riesco a uscire da questo problema
 

Star-Dust

Expert
Licensed User
Longtime User
Salve, sto cercando di scaricare i dati di una listview in una edit text mantenendoli in colonna ma senza successo.... ringrazio in anticipo chi abbia la cortesia di aiutarmi. Provengo da visual.net e ho appena iniziato a cimentarmi con b4a, per molti versi i due linguaggi sono simili e l'app che sto costruendo funziona ma non riesco a uscire da questo problema
apri un nuovo thread e inserisci il codice che usi
 

Star-Dust

Expert
Licensed User
Longtime User

Fabio68

Member
Licensed User
Ti ringrazio per avermi risposto e lo apprezzo molto, il segno di spunta l'ho già tolto da subito ed é per questo che non capisco come mai non mi legge il CRLF
 

Fabio68

Member
Licensed User
Grazie Star Dust, il problema era proprio il richiamo di edit text all' inizio della sequenza di carico dei dati... mi vergogno un po'
 
Top