Italian Lettura file .txt

Discussion in 'Italian Forum' started by nonno, Nov 14, 2017.

Similar threads

B4A Code Snippet Label Utils
B4A Tutorial Nine patch images tutorial
B4i Tutorial Custom Fonts
B4A Tutorial Compilation time and auto-increment build version
B4i Tutorial Multiple Pages Example
  1. nonno

    nonno Active Member Licensed 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.
     
  2. udg

    udg Well-Known Member Licensed 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.
     
    Star-Dust and nonno like this.
  3. nonno

    nonno Active Member Licensed User

    Grazie Mille
     
  4. udg

    udg Well-Known Member Licensed User

    Di nulla. Non ho fatto davvero nulla
     
  5. nonno

    nonno Active Member Licensed 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
     
  6. Emme Developer

    Emme Developer Active Member Licensed 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
     
    nonno likes this.
  7. nonno

    nonno Active Member Licensed User

    Grazie Mille
    nel log nessun errore.... ma non va
     
    Last edited: Nov 14, 2017
  8. nonno

    nonno Active Member Licensed User

    Code:
    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
     
  9. udg

    udg Well-Known Member Licensed 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: Nov 15, 2017
    nonno likes this.
  10. nonno

    nonno Active Member Licensed User

    Grazie udg
    ho risolto spostando all'interno del loop il codice che richiama il pannello :)
    grazie 1000
     
  11. nonno

    nonno Active Member Licensed 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
     
  12. Emme Developer

    Emme Developer Active Member Licensed 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"
     
    nonno likes this.
  13. nonno

    nonno Active Member Licensed User

    Grazie 1000
     
  14. Emme Developer

    Emme Developer Active Member Licensed User

  15. nonno

    nonno Active Member Licensed 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.
     
  16. Star-Dust

    Star-Dust Expert Licensed User

    Apri un nuovo thread per questa domanda per favore o Don si arrabbia
     
    nonno likes this.
  17. nonno

    nonno Active Member Licensed User

    Scusate :(
     
    LucaMs and Star-Dust like this.
  18. LucaMs

    LucaMs Expert Licensed User

    Assolutamente niente di grave; è solo che così potrebbe essere più facile, per altri, trovare risposta alla stessa domanda. Ma questo vale molto di più per i forum "internazionali", in cui i post sono miriadi.

    Non c'è bisogno di scusarsi, sappiamo che sei ultra-super-educato... anche troppo :)
     
    Star-Dust and nonno like this.
Loading...