Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - Problema con loop
Forum - C# / VB.NET - Problema con loop

Avatar
albertino (Normal User)
Newbie


Messaggi: 10
Iscritto: 05/02/2010

Segnala al moderatore
Postato alle 17:45
Mercoledì, 08/09/2010
Questo topic è stato chiuso dal moderatore

Ciao, oggi deve essere la giornata dei "problemini"

Devo dimensionare un array che contenga i valori letti da un file di testo. La mia, in verità povera, idea era di leggere il file per contarne le righe e poi dimensionare l'array.

Quando eseguo il codice sottostante si blocca come in un loop infinito. Se decommento la msgbox tutto funziona (chiaramente cliccando una marea di volte ok)


Codice sorgente - presumibilmente VB.NET

  1. Try
  2.  
  3.             Dim NumeroRigheFile As Integer = 0
  4.  
  5.             Dim fr As New IO.StreamReader(IO.Path.GetTempPath & "\AspedCustoBridgeArray.temp")
  6.             Do While Not fr.EndOfStream
  7.  
  8.                 'MsgBox("Riga numero " & NumeroRigheFile & " Lettura " & fr.ReadLine)
  9.  
  10.                 NumeroRigheFile += 1
  11.  
  12.             Loop
  13.             fr.Close()
  14.  
  15.  Catch ex As Exception
  16.  
  17.             MsgBox(ex.ToString)
  18.  
  19.         End Try



Mi sembrava la cosa più semplice di questo mondo, ma forse oggi non è la mia giornata.

Grazie a tutti

PM
Avatar
HeDo (Founder Member)
Guru^2


Messaggi: 2765
Iscritto: 21/09/2007

Up
2
Down
V
Segnala al moderatore
Postato alle 18:10
Mercoledì, 08/09/2010

a parte tutto esiste la funzione File.ReadAllLines che restituisce l'array delle linee del file senza preoccuparti di leggerlo "a mano".

cmq il tuo codice non funziona perchè la eof (ma anche in c) ti dice se è stata raggiunta la fine del file... ma devi andare avanti a leggerlo :) non basta chiamarla n volte una per riga, non siamo mica nel mondo delle favole in cui il codice ti legge nella mente e capisce cosa vuoi fare :)

se tu aggiungessi (ipoteticamente) una read dentro il ciclo lui manderebbe avanti il cursore all'interno del file fino ad arrivare alla fine, ma a seconda della dimensione della read avresti il conto dei bytes o qualche suo multiplo.

se volessi con questo approcio "contare" i ritorni a capo devi fare proprio quello... contare i ritorni a capo leggendo char per char e ogni volta che incontri un '\n' aumetare il conteggio.

ripeto però, il tuo metodo è altamente inefficiente, dipende ovviamente dalle dimensioni del file, da cosa ci devi fare e da tante altre cose, ma considerando una dimensione accettabile per un file di testo File.ReadAllLines fa per te.

PM
Avatar
albertino (Normal User)
Newbie


Messaggi: 10
Iscritto: 05/02/2010

Up
0
Down
V
Segnala al moderatore
Postato alle 18:18
Mercoledì, 08/09/2010
Incredibile........ Intendo la mia ignoranza.....

Grazie

PM