Streamwriter writeline - Problem
-
Hallo,
ich bin Anfänger was C++ angeht. Ich möchte gerne eine Txt-Datei in ein DataGridView laden. Wenn Zellen verändert werden soll auch die Möglichkeit bestehen das Ganze in der Txt-Datei zu speichern. Hier ist der Code:
private: System::Void button4_Click(System::Object^ sender, System::EventArgs^ e) { StreamReader^ sr = gcnew StreamReader(Pathname->Text); dataGridView1->Rows->Clear(); String^ line; array<String^> ^split; while (sr->Peek() >= 0) { line = sr->ReadLine(); split = line->Split(';'); dataGridView1->Rows->Add(split); } sr->Close(); for (int i = 0; i < dataGridView1->RowCount-1; i++) { if (dataGridView1->Rows[i]->Cells[0]->Value->ToString() == "") { dataGridView1->Rows->RemoveAt(i); i--; } } } private: System::Void button7_Click(System::Object^ sender, System::EventArgs^ e) { StreamWriter^ sw = gcnew StreamWriter(Pathname->Text); progressBar1->Maximum = dataGridView1->RowCount; String^ zeile; for (int i = 0; i < dataGridView1->RowCount-1; i++) { zeile = ""; for (int j = 0; j < dataGridView1->ColumnCount-2; j++) { zeile += dataGridView1->Rows[i]->Cells[j]->Value->ToString() + ";"; } zeile += dataGridView1->Rows[i]->Cells[dataGridView1->ColumnCount-1]->Value->ToString(); sw->WriteLine(zeile); progressBar1->PerformStep(); } sw->Close(); }
Beim ersten Mal funktioniert das auch. Wenn ich die Datei dann nochmal einlese und speichere stürzt das Programm ab. Mit folgender Meldung:
nformationen über das Aufrufen von JIT-Debuggen
anstelle dieses Dialogfelds finden Sie am Ende dieser Meldung.************** Ausnahmetext **************
System.NullReferenceException: Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.
bei xxx.xxx.button7_Click(Object sender, EventArgs e) in c:\users\xx\c++\xx\xx.h.h:Zeile 542.
bei System.Windows.Forms.Control.OnClick(EventArgs e)
bei System.Windows.Forms.Button.OnClick(EventArgs e)
bei System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
bei System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
bei System.Windows.Forms.Control.WndProc(Message& m)
bei System.Windows.Forms.ButtonBase.WndProc(Message& m)
bei System.Windows.Forms.Button.WndProc(Message& m)
bei System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
bei System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
bei System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)Wenn ich zum ersten Mal in die Txt-Datei speichere, dann wird automatisch eine Leerzeile unten angehängt. Kann es vielleicht damit zusammenhängen?
Danke schon einmal.
Gruß,
doemi
-
1. Du machst kein C++
2. Du machst C++/CLI, was etwas ganz anderes ist und für Anfänger total ungeeignet
3. Schau Dir mal das an:
http://blog.kalmbach-software.de/de/2010/03/05/ccli-und-winforms-macht-keinen-sinn/
4. Geh einfach in die Zeile "c:\users\xx\c++\xx\xx.h.h:Zeile 542", und schau Dir diese an, dann siehst Du Dein Problem...
5. Nimm bitte C#!
-
Ok danke erstmal. Ich habe hier Visual Studio 10 professional. Kann ich damit C# programmieren?
-
doemi schrieb:
Ok danke erstmal. Ich habe hier Visual Studio 10 professional. Kann ich damit C# programmieren?
Ja.
-
Dieser Thread wurde von Moderator/in Martin Richter aus dem Forum MFC (Visual C++) in das Forum C++/CLI mit .NET verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.