Italian Lettura file .txt

nonno

Active Member
Licensed User
Longtime User
Ciao ragazzi, ho un file in .txt che contiene ogni riga il (nomecliente, cognome cliente, via) ho una costumListView e ho un pannello con 3 Label.
come posso fare a leggere l'intera riga e inserire nelle label
esempio ;
label1. txt = nomecliente
label2.txt = cognomecliente
Label3.txt = via
Grazie mille per eventuali consigli.
 

udg

Expert
Licensed User
Longtime User
Se i 3 campi sono separati con uno specifico carattere separatore (es. virgola) puoi usare Regex.Split
Ancora Regex con un matcher se invece hai lunghezze fisse o "separatori" più complessi.
Semplice substring se hai lunghezze fisse.

Di sistemi ce ne sono tanti; la scelta dipenda dai dati che hai a disposizione.
 

udg

Expert
Licensed User
Longtime User
Di nulla. Non ho fatto davvero nulla
 

nonno

Active Member
Licensed User
Longtime User
Di nulla. Non ho fatto davvero nulla

scusa udg, dal telefono mi da errore "Lapplicazione si è bloccata in modo anomalo" dove sto sbagliando, questo errore lo fa quando uso clvClient

Dim pnlItem As Panel
pnlItem.Initialize("")
pnlItem.LoadLayout("layClienti")
Dim lbl1 As Label = pnlItem.GetView(1)
Dim lbl2 As Label = pnlItem.GetView(2)
Dim lbl3 As Label = pnlItem.GetView(3)

Dim Riga As tRigaClienti
Riga.Initialize

Dim line As String
Private Reader As TextReader
Dim a, b, c As String

Reader.Initialize(File.OpenInput(File.DirRootExternal, "FileAndroid.txt"))
line = Reader.ReadLine
clvClienti.Clear
Dim i As Int
Do While line <> Null
Log(line)
i=i+1
a=line.SubString2(0,10)
b=line.SubString2(0,10)
c=line.SubString2(0,10)
Riga.Nome = a
Riga.Cognome = b
Riga.Telefono = c

list1.AddSingleLine(a)

lbl1.Text = a
lbl2.Text = b
lbl3.Text = c

clvClienti.Add(pnlItem,140dip,Riga)
line = Reader.ReadLine
Loop
Reader.Close
 

Emme Developer

Well-Known Member
Licensed User
Longtime User
scusa udg, dal telefono mi da errore "Lapplicazione si è bloccata in modo anomalo" dove sto sbagliando, questo errore lo fa quando uso clvClient

Dim pnlItem As Panel
pnlItem.Initialize("")
pnlItem.LoadLayout("layClienti")
Dim lbl1 As Label = pnlItem.GetView(1)
Dim lbl2 As Label = pnlItem.GetView(2)
Dim lbl3 As Label = pnlItem.GetView(3)

Dim Riga As tRigaClienti
Riga.Initialize

Dim line As String
Private Reader As TextReader
Dim a, b, c As String

Reader.Initialize(File.OpenInput(File.DirRootExternal, "FileAndroid.txt"))
line = Reader.ReadLine
clvClienti.Clear
Dim i As Int
Do While line <> Null
Log(line)
i=i+1
a=line.SubString2(0,10)
b=line.SubString2(0,10)
c=line.SubString2(0,10)
Riga.Nome = a
Riga.Cognome = b
Riga.Telefono = c

list1.AddSingleLine(a)

lbl1.Text = a
lbl2.Text = b
lbl3.Text = c

clvClienti.Add(pnlItem,140dip,Riga)
line = Reader.ReadLine
Loop
Reader.Close
Prova a mettere il codice sotto tag quando lo mandi, è più leggibile. Usando il debug dovresti vedere la linea che ti da errore Se questo è tutto il codice sembra che tu non abbia inizializzato clvClienti, prima di fare il clear
 

nonno

Active Member
Licensed User
Longtime User
Prova a mettere il codice sotto tag quando lo mandi, è più leggibile. Usando il debug dovresti vedere la linea che ti da errore Se questo è tutto il codice sembra che tu non abbia inizializzato clvClienti, prima di fare il clear
Grazie Mille
nel log nessun errore.... ma non va
 
Last edited:

nonno

Active Member
Licensed User
Longtime User
B4X:
Sub Globals
    'These global variables will be redeclared each time the activity is created.
    'These variables can only be accessed from this module.

    Private list1 As ListView
    Private lbl1 As Label
    Private lbl2 As Label
    Private lbl3 As Label
    Private clvClienti As CustomListView
End Sub

Sub Activity_Create(FirstTime As Boolean)

   Activity.LoadLayout("laymain")
   
   
    CaricaClienti
End Sub


Sub Activity_Resume

End Sub
Sub CaricaClienti
   
    Dim pnlItem As Panel
    pnlItem.Initialize("")
    pnlItem.LoadLayout("layClienti")
    Dim lbl1 As Label = pnlItem.GetView(1)
    Dim lbl2 As Label = pnlItem.GetView(2)
    Dim lbl3 As Label = pnlItem.GetView(3)
   
    Dim Riga As tRigaClienti
    Riga.Initialize
   
    Dim line As String
    Private Reader As TextReader
    Dim a, b, c As String
   
    Reader.Initialize(File.OpenInput(File.DirRootExternal, "FileAndroid.txt"))
    line = Reader.ReadLine
   
    clvClienti.Clear
    Dim i As Int
    Do While line <> Null
        Log(line)
        i=i+1
       a=line.SubString2(0,4)
    b=line.SubString2(5,15)
        c=line.SubString2(0,10)
        Riga.Nome = a
        Riga.Cognome = b
        Riga.Telefono = c
      
       list1.AddSingleLine(a & "  " & b)
   
        lbl1.Text = a
        lbl2.Text = b
        lbl3.Text = c
       
    clvClienti.Add(pnlItem,140dip,Riga)
        line = Reader.ReadLine

    Loop
    Reader.Close
   
End Sub

Sub Activity_Pause (UserClosed As Boolean)

End Sub


Sub costumClienti_ItemClick (Index As Int, Value As Object)
    CaricaClienti
End Sub

Sub clvClienti_ItemClick (Index As Int, Value As Object)
   
End Sub
 

udg

Expert
Licensed User
Longtime User
Sei sicuro che in layClienti le 3 label siano rispettivamente quelle numerate 1,2, e 3? In pratica sono precedute da un'altra view e tutte appartengono all'Activity?

Non capisco come il recapito telefonico (che immagino debba seguire il cognome) parta da 0. Sei certo che le righe abbiano tutte lo stesso numero di caratteri?

Infine, le inizializzazioni di panel e Riga dovrebbero essere all'interno del loop in modo da produrre oggetti nuovi per ogni elemento della CLV.
 
Last edited:

nonno

Active Member
Licensed User
Longtime User
Infine, le inizializazzioni di panel e Riga dovrebbero essere all'interno del loop in modo da produrre oggetti nuovi per ogni elemento della CLV.
Grazie udg
ho risolto spostando all'interno del loop il codice che richiama il pannello :)
grazie 1000
 

nonno

Active Member
Licensed User
Longtime User
Scusate, vorrei chiedervi è possibile intercettare i tasti del cellulare? Mi spiego meglio vorrei disabilitare i tasti del telefono e far chiudere l'app tramite pulsante perche prima che si chiude devo salvare dei dati , oppure se possibile , ma no credo , di fare il salvataggio quando l'activyti perde il controllo.
Grazie 1000
 

Emme Developer

Well-Known Member
Licensed User
Longtime User
Scusate, vorrei chiedervi è possibile intercettare i tasti del cellulare? Mi spiego meglio vorrei disabilitare i tasti del telefono e far chiudere l'app tramite pulsante perche prima che si chiude devo salvare dei dati , oppure se possibile , ma no credo , di fare il salvataggio quando l'activyti perde il controllo.
Grazie 1000
Puoi intercettare il tasto back per evitare la chiusura, ma NON puoi intercettare il tasto home che comunque metterebbe in pausa l'activity. Per salvare i dati puoi comunque intercettare 2 casi:
La pausa dell'activity, quindi con l'evento activity_pause
O la chiusura dell'app, nello starter service con l'evento "Service_TaskRemoved"
 

nonno

Active Member
Licensed User
Longtime User
Puoi intercettare il tasto back per evitare la chiusura, ma NON puoi intercettare il tasto home che comunque metterebbe in pausa l'activity. Per salvare i dati puoi comunque intercettare 2 casi:
La pausa dell'activity, quindi con l'evento activity_pause
O la chiusura dell'app, nello starter service con l'evento "Service_TaskRemoved"
Grazie 1000
 

nonno

Active Member
Licensed User
Longtime User
Ciao ragazzi dovrei criptare dei dati, in VB6 uso i codici asci ma qua con B4A non saprei come fare?!
grazie 1000 per eventuali suggerimenti.
 

Star-Dust

Expert
Licensed User
Longtime User
Apri un nuovo thread per questa domanda per favore o Don si arrabbia
 
Top