Poblema Lettura file sequenziale

lunedì 26 gennaio 2009 - 12.27

ventu Profilo | Newbie

Ciao a tutti.Mi sto scervellando con questa parte del mio
programma che, seppur banale non riesco a risolvere autonomamente.
Ho un file sequenziale che il nostro server gestionale estrae. Questo file è
composto da un susseguirsi di righe composte da 100 caratteri.
Fino ad adesso tutto era gestito da una macro Excel banalissima e tutto
funzionava alla grande. Questa macro, prendeva i primi 10 caratteri della
stringa e buttava gli altri. Il codice (banalissimo), era questo:

Dim FSO As New FileSystemObject
Dim TS As TextStream

Set TS = FSO.OpenTextFile(FileName, FORREADING)

Do While Not TS.AtEndOfStream
s = TS.Read(10)
TS.Skip 90
Loop

Adesso ho voluto rifare la stessa cosa in asp.net 2.0 ma purtroppo (o magari
sbaglio) il TextStream non c'è, quindi mi sono dovuto arrangiare per usare la
proprietà Skip. Ho fatto una cosa del genere

====ASP.NET 2.0==================================
Dim y As Long
Dim Lettore As New System.IO.StreamReader("C:\F.SER")
Dim personRecords As String = Lettore.ReadLine
Dim personList As List(Of Person) = New List(Of Person)()

effettivo = personRecords.Length

For y = 1 To effettivo Step 100
personrecord = Mid(personRecords, y, 10)
personList.Add(Me.GetPersonFromString(personrecord))
Next y

Return personList
===================================================

Come potete vedere la logica alla fine è la stessa, con mid scorro di 100 in
100 e prendo solo i primi 10 caratteri (che sono quelli del codice articolo
che mi interessano)

Il problema dov'è? (direte voi, giustamente)..
Il problema è che le righe di quel file sono tipo 10000.
Con excel funziona tutto alla grande, con ASP.NET dopo un pochetto scoppia
qualcosa e, tipo alle 250 esima riga comincia a sfalsararmi il tutto e dove
prima era:

BARATTOLO1
BARATTOLO2
BARATTOLO3
BARATTOLO4

Comincia a uscrmi:

BARATTOLO5
ARATTOLO1-
RATTOLO1-X
ATTOLO1-XY

Cosa sbaglio? Il file sono sicuro sia fatto bene, lo dimostra il fatto che
sia excel che EDIT di windows (impostando la lettura a 100 caratteri per
riga) mostri i dati in modo corretto. La mia ipotesi è che il comando
(vecchio comando) SKIP di VB6 non è proprio la stessa cosa di quello che
faccio, quindi dopo un tot di passaggi comincia a prendermi caratteri che non
dovrebbe prendere :(

Idee?
Grazie mille in anticipo!

balfaz Profilo | Expert

ti faccio queste domande
il tuo file non ha caratteri per la separazione dei dati?
ogni riga è un registro?
alla fine di ogni riga non hai qualche cosa che ti segna il fine della riga?

ho cercato un po in rete è ho trovato questo codice + o - modificato per la tua necessita spero ti serva
Dim oFile As System.IO.File Dim oRead As System.IO.StreamReader Try oRead = oFile.OpenText("C:\tuofile.txt") Dim str as string While oRead.Peek <> -1 str = Mid(1, 10, oRead.ReadLine) Console.WriteLine(str) End While Catch ex As Exception Finally oRead.Close() End Try
facci sapere,
"Che in questo 2009 i nostri codici possano sconvolgere il mondo."

ventu Profilo | Newbie

Risolto. Problema di encoding

Se NON si imposta l'encoder, quello di default non è : System.Text.Encoding.Default ma un altro...


Dim reader As New System.IO.StreamReader("C:\F.SER", System.Text.Encoding.Default)

Grazie cmq, proverò il tuo code!

balfaz Profilo | Expert

benissimo, ci aggiorniamo

"Che in questo 2009 i nostri codici possano sconvolgere il mondo."

ventu Profilo | Newbie

Tutto ok modificando qua e la il tuo ottimo esempio.
L'ho sostituito al mio.
Grazie!

balfaz Profilo | Expert

Pregox

"Che in questo 2009 i nostri codici possano sconvolgere il mondo."
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-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5