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.


Anmelden zum Antworten