Problem mit For-Schleife



  • Hallo ihrs,

    ich hab derzeit praktikum und programmiere mit VC++ 2008 von MS ein DB-Programm mit Tcp-client/Server.

    nun soll das DataSet vom server in Strings umgewandelt werden, diese dann in byte-arrauy und ab in den Stream damit. das meiste wird durch for-schleifen realisiert. jedoch ist nun das problem, dass die for-schleifen übersprungen werden, alles andere klappt.

    hier der Code:

    for (int a = 1; a == anzahlrows; a++)
    					 {
    						 DataRow^ row = zwischentable->Rows[a];
    						 for (rowspalte = 2; rowspalte == 9; rowspalte++)
    						 {
    							 data = nullptr;
    							 if (row[rowspalte]->ToString() != "")
    							 {
    								 data = row[rowspalte]->ToString();
    								 array<Byte>^ msg = System::Text::Encoding::ASCII->GetBytes(data);
    								 array<Byte>^ msgantw = nullptr;
    								 stream->Write(msg, 0, msg->Length);
    								 bool erfolg = false;
    								 while (erfolg == false)
    								 {
    									 Int32 bytes = stream->Read(msgantw, 0, msgantw->Length);
    									 String^ dataantw = System::Text::Encoding::ASCII->GetString(msgantw, 0, bytes);
    									 if (dataantw == "Empfangen")
    									 {
    										 erfolg = true;
    									 }
    								 }
    							 }
    							 else
    							 {
    								 data = "leer";
    								 array<Byte>^ msg = System::Text::Encoding::ASCII->GetBytes(data);
    								 array<Byte>^ msgantw2 = nullptr;
    								 stream->Write(msg, 0, msg->Length);
    								 bool erfolg2 = false;
    								 while (erfolg2 = false)
    								 {
    									 Int32 bytes = stream->Read(msgantw2, 0, msgantw2->Length);
    									 String^ dataantw2 = System::Text::Encoding::ASCII->GetString(msgantw2, 0, bytes);
    									 if (dataantw2 == "Empfangen")
    									 {
    										 erfolg2 = true;
    									 }
    								 }
    							 }
    						 }
    						 dssent = dssent + 1;
    					 }
    

    alle vorher gesetzten variablen die in dem Code-teil hier nicht deklariert sind, wurden im programm weiter oden deklariert und initialisiert.

    hoffe ihr erkennt evtl den fehler...

    mfg Poppkins



  • Versuch mal

    [cpp]

    for (int a = 1; a <= anzahlrows; a++)
    //setze die Schleife fort, solange a kleiner-gleich anzahlrows ist!

    [/cpp]

    Das gleiche gilt natürlich auch für die anderen for-Schleifen.

    Außerdem fängt man bei solchen Geschichten üblicherweise bei Null an zu zählen.

    EDIT: Hmm, die cpp-Tags wollen heute irgendwie nicht... 😕

    EDIT: Ach ja, was du machst, nennt sich C++/CLI, dafür gibt's ein eigenes Board hier. Die nächste Frage also besser da stellen. 🙂



  • ok, danke, ich denk nächstes mal dran. habs mal geändert, neues problem:

    System.NullReferenceException: Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.
       bei ServerDB.Form1.timer1_Tick(Object sender, EventArgs e) in (Pfad)form1.h:Zeile 336.
    

    betreffende Zeile:

    Int32 bytes = stream->Read(msgantw, 0, msgantw->Length);
    

    und ich hab diesen fehler zigmal gehabt und kp wie ich ihn gelöst hab 😉



  • Hört sich an, als wäre eines deiner Objekte (stream, msgantw?) gar nicht instanziiert worden. Ist aus deinem Code nicht ersichtlich. Und ich bin eben kein C++/CLI-Experte. Falls hier nix weiter kommt, stell diese neue Frage besser im passenden Forum:

    http://c-plusplus.net/forum/viewforum-var-f-is-58.html



  • mach ich, t-dem danke für die schnelle antwort 🙂



  • Poppkins schrieb:

    t-dem

    Lustig, auf was für Abkürzungen die Leute alles kommen... 😉


Anmelden zum Antworten