MasterDrive.it   
Vai indietro   MasterDrive.it > Software Development > Visual C#



Rispondi
 
Strumenti della discussione Modalità di visualizzazione
Vecchio 21-03-2010, 20:10   #1 (permalink)
Neofita della community

 
84 Messaggi

giangi_luca ancora senza reputazione ( 0 )
Errore in lettura file txt

ciao a tutti,
ho un problema che no riesco a capire!
sto cercando di leggendo un file e memorizzando parte del suo contenuto in una variabile.
però mi va in loop infinito!!!!

privatevoid button2_Click(object sender, EventArgs e)
{
int contRighe = 1;
Boolean bfound = true;
List<string> documenti = newList<string>();
//apro file
StreamReader sr = newStreamReader(textBox1.Text);
int Inizio = Int32.Parse(RigaIniz.Text);
int Fine = Int32.Parse(RigaFinale.Text);
try
{
while (!sr.EndOfStream)
{
if (contRighe > Inizio & contRighe < Fine)
{
documenti.Add(sr.ReadLine());
}

contRighe++;
}
}
finally
{
sr.Close();
}

}


mi dire cosa sto sbagliando???
non sto riuscendo a uscirne pechè se tolgo la condizione & mi fuzniona!!!!!!!



giangi_luca non è in linea   Bookmark and Share Rispondi quotando
Vecchio 21-03-2010, 20:32   #2 (permalink)
Collega della community

 L'avatar di Fix978

 
909 Messaggi

Fix978 e' un tipo da prendere in considerazione ( + 650 )Fix978 e' un tipo da prendere in considerazione ( + 650 )Fix978 e' un tipo da prendere in considerazione ( + 650 )Fix978 e' un tipo da prendere in considerazione ( + 650 )Fix978 e' un tipo da prendere in considerazione ( + 650 )Fix978 e' un tipo da prendere in considerazione ( + 650 )Fix978 e' un tipo da prendere in considerazione ( + 650 )
Se analizzi il tuo codice, ti accorgi che:

Il Ciclo continua fino a quando non arrivi alla fine del Flusso (!sr.EndOfStream), ma nel Ciclo, tu aumenti solamente il valore di ContRighe, ed il Flusso rimane sempre al punto dell'ultima lettura .ReadLine, non arriverà mai alla fine.

Anche la condizione nidificata (IF), non ti va a leggere la riga partendo dalla posizione che vuoi tu, perchè non c'è spostamento di Flusso al di fuori di tale condizione, la prima volta che richiami la ReadLine ti leggerà sempre la prima riga, perchè la posizione di lettura nel flusso sarà alll'inizio.

Prova ad aggiungere un Else alla condizione nidificata, ed aggiungi una ulteriore lettura di Riga (a vuoto), in questo modo la posizione all'interno del Flusso avanzerà. Per essere ancora più preciso, aggiungi anche che se ContRighe è maggiore di Fine, il ciclo può fermarsi... sarebbe inutile continuare a leggere fino alla fine del Flusso se hai già recuperato le righe che ti interessano.
__________________
VB.Net: {Extension Methods} {Lambda Expressions}
HowTo: {Windows 7 - Installare il Sistema su C e la cartella Users su D}

è il metodo migliore per ringraziare chi ti è stato di aiuto.
Fix978 non è in linea   Bookmark and Share Rispondi quotando
Vecchio 21-03-2010, 20:58   #3 (permalink)
Neofita della community

 
84 Messaggi

giangi_luca ancora senza reputazione ( 0 )
hai ragione! ho aggiunta una .ReadLine per fare proseguire il flusso e ora funziona.

grazie Mille per averti aiutato a capire l'errore.
giangi_luca non è in linea   Bookmark and Share Rispondi quotando
Rispondi

Strumenti della discussione
Modalità di visualizzazione

Regole d'invio
Non puoi inserire discussioni
Non puoi inserire repliche
Non puoi inserire allegati
Non puoi modificare i tuoi messaggi

BB code è attivo
Le smilies sono attive
Il codice IMG è attivo
il codice HTML è disattivato
Trackbacks are attivo
Pingbacks are attivo
Refbacks are disattivato

Salto del forum


Tutti gli orari sono GMT +2. Attualmente sono le 09:47.


Powered by vBulletin versione 3.8.0
Copyright © 2000 - 2010, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO 3.2.0

Valid XHTML 1.0 Transitional  Creative Commons License

Eccetto dove diversamente specificato, i contenuti pubblicati in questa comunità sono rilasciati sotto Licenza
Creative Commons Attribuzione-Non commerciale-Condividi allo stesso modo 2.5 Italia License.
La comunita' di MasterDrive.it non e' responsabile di eventuali imprecisioni presenti nelle pagine.