Readline problém   otázka

VB.NET, Algoritmy, I/O operace

Ahoj.

Přidávám do kolekce data ze souboru.

        Dim sr As New StreamReader("priklady.txt")
        While sr.EndOfStream = False
            dt.Add(sr.ReadLine)
        End While

Ale hází to chybu NullReferenceException was unhandled: Object reference not set to an instance of an object. Soubor to našlo, řádky tam jsou, tak nevím kde je problém.

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět
Dim sr As New StreamReader("priklady.txt")
Dim s As String = String.Empty

While sr.EndOfStream = False
   s = sr.ReadLine            
   dt.Add(s)
End While

:)

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

Zkusil jsem to, a zdá se že problém je někde jinde,a si u přidání do kolekce. Zkoušel jsem to napsat různě, přes pole... Ale pořád ta stejná chyba.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Pokud to hází NullReferenceException a ve streamu Null není (když na něm v pohodě zavoláte EndOfStream), pak jedinou možností je, že null je v proměnné dt.

Jak inicializujete a deklarujete tu dt?

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Teď jsem to udělal na pole a mám to

Dim dt() As String
.
.
.
Dim sr As New StreamReader("priklady.txt")
While sr.EndOfStream = False
    dt(dt.Length + 1) = sr.ReadLine()
End While
sr.Close()

nahlásit spamnahlásit spam 0 odpovědětodpovědět

No jo, ale vy jste jenom udělal proměnnou typu pole. Samotné pole jste nevytvořil, v té proměnné nic není.

Na to je potřeba dávat pozor, správně bude jestli se nepletu

Dim dt(10) As String

.

10 je horní hranice, tedy Length - 1.

Pokud počet položek předem neznáte, pouijte raději

Dim dt As New List(Of String)
nahlásit spamnahlásit spam 0 odpovědětodpovědět

Díky, už to jede.

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback