Forum: PC-Programmierung Textdatei programmieren mysteriöser Fehler


von Saugnapf (Gast)


Lesenswert?

hallo,

ich prgrammiere mit VC++ .Net und schreibe gerade an einem Programm das 
mir den Inhalt einer Textdatei zeilenweise einliest. So weit bin ich 
schon:
1
array<String^>^ line;
2
String^ path;
3
4
path = Application::StartupPath + "Pfad2";
5
System::IO::StreamReader^ line2 = gcnew System::IO::StreamReader( path );
6
7
line[0] = line2->ReadLine();
8
toolStripStatusLabel1->Text = System::Convert::ToString(line[0]);

Wenn ich jetzt kompilieren lasse, dann zeigt er mir keinen Fehler an, 
was auch klar ist, da er nur die Schreibfehler checkt. Aber wenn ich 
jetzt das Programm dann starte, stürzt es gleich wieder ab, und es kommt 
die Fehlermeldung:


Eine nicht behandelte Ausnahme des Typs "System.NullReferenceException" 
ist in Programm.exe aufgetreten.

Zusätzliche Informationen: Der Objektverweis wurde nicht auf eine 
Objektinstanz festgelegt.


Diesen Fehler bekomme ich zum ersten mal. Rein theoretisch würde ich 
jetzt mal vermuten dass der Fehler kommt, wenn nichts in der Datei steht 
von wegen:  "System.NullReferenceException" aber in der ersten zeile der 
Datei steht eine Zahl, in der zweiten ein Wort.

Was habe ich denn falsch gemacht? Ich will die erste Zeile in das array 
line an der stelle 0 packen, die zweite zeile an die stelle 1 im array 
machen.

Kann mir jemand helfen?

Saugnapf

von Karl H. (kbuchegg)


Lesenswert?

Saugnapf wrote:

Ohne jetzt der grosse managed C++ Profi zu sein:


> Eine nicht behandelte Ausnahme des Typs "System.NullReferenceException"
> ist in Programm.exe aufgetreten.
>
> Zusätzliche Informationen: Der Objektverweis wurde nicht auf eine
> Objektinstanz festgelegt.

Ich denke mal, das kommt daher, weil du nirgends das Array
Objekt anlegst.

array<String^>^ line;

ist ja erst mal nur eine Referenz auf ein mögliches Array Objekt.
Aber wo ist es denn tatsächlich, wo legst du denn das Array
an, wenn du versuchst hier:

   line[0] = line2->ReadLine();

in das Array zu schreiben.

von Saugnapf (Gast)


Lesenswert?

hallo,

ich wusste nicht dass man das array noch irgendwo anlegen muss. ich habe 
erst letztens mit arrays angefangen zu arbeiten.

Wie muss man denn das array anlegen? Könntest du mir nochmal einen Tipp 
geben?

Danke,

Sugnapf

von Arc N. (arc)


Lesenswert?

line ist ein Verweis auf ein Array (von unbestimmter Größe) von (nicht 
angelegten) Strings.
Angelegt wird das Array z.B. so
array<String^>^ line = gcnew array<String^>(20);
Danach hat das Array Platz für zwanzig Strings, wobei die Strings immer 
noch Nullreferenzen sind, was im diesem Fall nichts macht, da ReadLine 
einen neuen String zurückliefert.

p.s. anscheinend ist es z.Z. irgendwie Mode den Managed C+-Quatsch zu 
benutzen. IMO entweder richtiges C++ etc. nehmen oder gleich C# + Net 
Framework.

von Saugnapf (Gast)


Lesenswert?

Danke leute, es geht jetzt.

Saugnapf

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.