Italian Leggere file file di testo posizionale

select

Member
Licensed User
Longtime User
Ciao a tutti, vorrei un consiglio da chi più esperto di me può aiutarmi.

Dovrei andare a leggere un file di testo contenente dei campi posizionali.
In pratica significa che questo file contiene del testo composto da diverse righe, dove in una riga ad una determinata posizione corrisponde un determinato valore.
Quindi io dovrei leggere questo file recuperandone i dati all'interno in base ad uno schema predefinito.
Per esempio potrei dover leggere, partendo dalla riga 1 in poi, dalla posizione n.1 alla n.15 e inserire quel dato in una variabile, poi dalla 32 alla 57 e mettere in un'altra variabile. E poi passare alla riga 2 allo stesso modo.

Diciamo che il discorso del file di testo è relativo perchè io riesco già a leggerlo ed inserire tutto il suo contenuto in una variabile. E' li poi che non so come andare a prendere solo i dati nelle posizioni che mi interessano e scartare gli altri.

spero di essere stato chiaro e ringrazio in anticipo per i consigli :)
 

LucaMs

Expert
Licensed User
Longtime User
Ciao.

Molto probabilmente puoi leggere tutto il file in un oggetto List tramite File.ReadList(Dir, NomeFile).

Fatto questo, supponendo che tu non voglia/possa usare caratteri speciali che rappresentino inizio e fine di un "campo", come ad esempio i tag che si usano qui per pubblicare codice, ovvero [ CODE ] [ / CODE ] (senza spazi), dovrai usare le funzioni stringa, nel suo esempio la SubString2 (altrimenti potresti usare altri metodi pratici).

Ad esempio (supponendo che le posizioni siano sempre le stesse in tutte le righe di testo):
B4X:
Dim lstRighe As List = File.ReadList(File.DirDefaultExternal, "NomeFile.txt")

Dim Campo1(lstRighe.Size), Campo2(lstRighe.Size) As String

Dim Riga As String
For i = 0 To lstRighe.Size - 1
   Riga = lstRighe.Get(i)
   Campo1(i) = Riga.SubString2(0, 15)
   Campo2(i) = Riga.SubString2(31, 57)
Next

Campo1() e Campo2() possono essere anche di tipo diverso da String, saranno convertiti automaticamente (magari con qualche cautela).
 
Top