Leggere da file di testo e riempire una struttura dati

lunedì 14 dicembre 2009 - 10.19

pernagio Profilo | Newbie

Ciao,
Sto cercando di scrivere uno script in VB.NET per MapWindows, ma sono bloccato perche' non riesco a trovare una funziona analoga alla fscanf del c.....In particolare mi serve di
- leggere da un file di testo strutturato in questo modo
NUM TYpe DIM1 DIM2
1000 q 10 10
1003 r 12 13
- di riempire una structure con i campi NUM TYpe DIM1 e DIM2 della prima riga in modo da fare tutti i confronti necessari per lo script
- poi passare alla riga successiva....fino alla fine del file.

Qualcuno sa aiutarmi? anche solo indicandomi quali metodi \ classi \ funzioni devo usare!
Grazie

NB: il file di testo lo creo io, quindi posso usare qualunque separatore tra i caratteri (ad esempio un TAB)

Brainkiller Profilo | Guru

>Ciao,
>Sto cercando di scrivere uno script in VB.NET per MapWindows,
>ma sono bloccato perche' non riesco a trovare una funziona analoga
>alla fscanf del c.....In particolare mi serve di

Carina la fscanf eh ?
Io in C# o cmq. anche VB.NET uso questo approccio.

Uso intanto il metodo System.IO.File.ReadAllLines per leggere tutte le righe del file testuale che vengono messe in un array di stringhe.
Successivamente faccio un foreach o un for su tutte le righe.
Dentro il for prendo la riga in esame e chiamo il metodo Split passando il separatore che mi restituisce un array di tutti i valori. A quel punto per ogni valore lo vado a mettere nel campo della struttura.
Ciao

David De Giacomi | <empty>
http://blogs.dotnethell.it/david/

pernagio Profilo | Newbie

grazie mille...
si la fscanf e' una gran cosa..avrei risolto tutto in una riga di codice!
cmq ho risolto tutto usando questa classe in questo modo:


Using MyReader As New _
Microsoft.VisualBasic.FileIO.TextFieldParser("C:\Documents and Settings\Administrator\Desktop\Sviluppo\Footprint2Point\ESID.txt")
MyReader.TextFieldType = FileIO.FieldType.Delimited
MyReader.SetDelimiters(" ")
Dim currentRow As String()
Dim row as Integer
Dim ESID as Integer()
ESID = New Integer(3){}
Dim TypeShape as char ()
Typeshape = New char(10){}
Dim D1 as Double()
D1 = New Double(3){}
Dim D2 as Double()
D2 = New Double(3){}

cosi' nel vettore currentRow ho gia' tutti i campi della riga e mi basta cn un while di splittarlo nei 4 vettori (invece che nella struct)
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5