Hallo,
habe mit folgendem Source Code ein Problem:
Und zwar habe ich folgendes:
Ich habe ein zweidimensionales Array feld[672, 21].
Die Socket_class funktion schickt mir mehrere Strings hintereinander und legt diese in rcvbuffer ab. Als Beispiel hat rcvbuffer nach dem ersten durchlauf folgenden Inhalt:
rcvbuffer = "addr: 1703 data: 1fffff ".
dann wandele ich das "1fffff" in den String data = "111111111111111111111"
nun soll der String data in dieses zweidimensionale Array feld[] hinterlegt werden. Das passiert in der for- Schleife.
Mein Problem ist jetzt dass er in die while-schleife reinspringt und sie durchläuft und nach dem Durchlauf zu grafik_on=true springt (obwohl da noch 8 andere Strings gesendet werden).
Demnach sieht das feld-Array wie folgt aus: feld[0, x]=beschrieben und der rest ist leer.
Wenn ich aber debugge (in der while-schleife) dann füllt er das feld-Array so wie es sein soll:
feld[0, x]=beschrieben
feld[1, x]=beschrieben
feld[2, x]=beschrieben
feld[3, x]=beschrieben
feld[4, x]=beschrieben
feld[5, x]=beschrieben
feld[6, x]=beschrieben
feld[7, x]=beschrieben
und der Rest bleibt leer (so wäre es auch richtig).
Also Zusammengefasst:
Wenn ich das Programm ausführe wird das feld[] teilweise gefüllt und wenn ich im Debug-Mode durchgehe dann füllt er das feld[] so wie es sein soll.
Was mache ich falsch?
Danke fürs durchlesen dieses langen Beitrags.
MfG
Andreas
habe mit folgendem Source Code ein Problem:
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) //Event for Click Button1
{
this->send("sende\n"); //send String to get answer
//for Array
String^ addr;
String^ data;
String^ rcvbuffer;
String^ buf_bin;
int dec, SPALTE=0, ZEILE=0;
while( Socket_class::rcv_line(rcvbuffer, 10, 40, "\n") > 0 )
{
addr = rcvbuffer->Substring(rcvbuffer->IndexOf(' ', 0 ), ( rcvbuffer->IndexOf(' ', 5) - rcvbuffer->IndexOf(' ', 0)));
data = rcvbuffer->Substring(rcvbuffer->IndexOf(' ', 12 ), (( rcvbuffer->Length ) - rcvbuffer->IndexOf(' ', 12)));
addr = addr->Remove(0, 1);
data = data->Remove(0, 1);
dec = Convert::ToInt32(data, 16);
buf_bin = Convert::ToString(dec,2);
data = buf_bin->PadLeft(21, L'0');
for(SPALTE=0; SPALTE<=20; SPALTE++)
{
feld[ZEILE, SPALTE] = data[SPALTE];
}
ZEILE++;
}
grafik_on=true;
this->pictureBox1->Invalidate();
}
Und zwar habe ich folgendes:
Ich habe ein zweidimensionales Array feld[672, 21].
Die Socket_class funktion schickt mir mehrere Strings hintereinander und legt diese in rcvbuffer ab. Als Beispiel hat rcvbuffer nach dem ersten durchlauf folgenden Inhalt:
rcvbuffer = "addr: 1703 data: 1fffff ".
dann wandele ich das "1fffff" in den String data = "111111111111111111111"
nun soll der String data in dieses zweidimensionale Array feld[] hinterlegt werden. Das passiert in der for- Schleife.
Mein Problem ist jetzt dass er in die while-schleife reinspringt und sie durchläuft und nach dem Durchlauf zu grafik_on=true springt (obwohl da noch 8 andere Strings gesendet werden).
Demnach sieht das feld-Array wie folgt aus: feld[0, x]=beschrieben und der rest ist leer.
Wenn ich aber debugge (in der while-schleife) dann füllt er das feld-Array so wie es sein soll:
feld[0, x]=beschrieben
feld[1, x]=beschrieben
feld[2, x]=beschrieben
feld[3, x]=beschrieben
feld[4, x]=beschrieben
feld[5, x]=beschrieben
feld[6, x]=beschrieben
feld[7, x]=beschrieben
und der Rest bleibt leer (so wäre es auch richtig).
Also Zusammengefasst:
Wenn ich das Programm ausführe wird das feld[] teilweise gefüllt und wenn ich im Debug-Mode durchgehe dann füllt er das feld[] so wie es sein soll.
Was mache ich falsch?
Danke fürs durchlesen dieses langen Beitrags.

MfG
Andreas