Felder in ListView Komponente
-
Joe_M. schrieb:
Von was wird die AccessViolation den geworfen?
Hi,
ich schätze mal, Joe_M. meinte damit: In welcher Zeile tritt die AccessViolation auf? (Auf welcher Zeile steht der Debugger nach dem Stoppen?)MfG
Alexander Sulfrian
-
Ab folgender Zeile:
if(player->Strings[e].AnsiPos("kills_") == 1 && ListView1->Items->Item[rownumber]->SubItems->Count <= 7) ListView1->Items->Item[rownumber]->SubItems->Strings[2] = player->Strings[e + 1];Was ich merkwürdig finde ist, wenn ich player->Clear() im OnClick Ereignis weglasse das dann alles fehlerfrei läuft. Nur die Stringliste wird dann gigantisch groß. hab echt keinen Plan was das alles soll, wenn der Code so daneben wäre würde er mir doch nicht 100 Server fehlerfrei auswerten. Sporatisch steigt er bei dem ein oder anderen Server mit einer Access violation aus

-
Mal ganz blöd gefragt:
if(player->Strings[e].AnsiPos("playername_") == 1 && ListView1->Items->Item[rownumber]->SubItems->Count <= 7) ListView1->Items->Item[rownumber]->SubItems->Strings[0] = player->Strings[e + 1]; //NameWie kannst du dir sicher sein, dass in der letzten Zeile e+1 in player Existiert? Schließlich leerst du ja vorher (oder sonst wann). (Wahrscheinlich Blödsinn. Aber vielleicht habe ich ja Glück und Recht. ;))
-
sobald AnsiPos("playername_") in der Stringliste vorkommt müsste logischerweiße ja auch der Name folgen,also [e + 1]
-
"sollte". Egal. Tut es das auch?! (Sorry, bei dem Chaos finde ich die richtige Exceptionmeldung nicht mehr...)
Wenn die letzte Zeile von player playername_, score_, kill_, etc. enthält, kracht es auf jeden Fall.
-
Du hast auf jeden Fall recht, aber warum bekomme ich dann keinen Index out of bound Error ? oder hab ich da was falsch verstanden ?
-
if(player->Strings[e].AnsiPos("playername_") == 1 && e + 1 <= player->Count) ListView1->Items->Item[rownumber]->SubItems->Strings[0] = player->Strings[e + 1]; //Namehilft da auch nicht

-
Ich glaube, (e+1) muss KLEINER als Count() sein...
Ich dachte, dein Problem WAR ein OutOfBoundsError...
War aber wohl eine AV...Ausserdem fängst du nicht ab: Wenn warum auch immer "_deaths" einmal ausfällt, greifst du auf SubItems zu, die es nicht gibt, oder? //Edit: Ach so, fängst du ja ab. //Edit2: Nö, doch nicht. "<=7"?! Was soll das denn? Hast du Angst, du hast mehr als 7 Subitems?
-
Das stimmt schon -hatte mich mit dem Index geirrt, bringt aber auch nichts. Erst hatte ich nur "out of bound" errors.Sie treten jetzt nicht mehr auf, nur noch Access violation errors. Das death ausfallen kann habe ich soeben auch gemerkt. entweder ist bei der Serverprogrammierung bei Battlefield 1942 was schief gelaufen oder es liegt am UDP Protokoll das manchmal nicht alles ankommt. Aber das UDP so dermassen anfällig ist kann ich irgendwie nicht glauben weil ich schon so viel mit udp sockets gemacht habe und nie mit einer Fehlerhaften übertragung zu kämpfen hatte. Bei dem Battlefield servern sieht das irgendwie anders aus, die senden stellenweiße so einen müll wie z.b 3 mal den gleichen user oder hier und da fehlt was. Habe mir sogar schon ein dummy Programm gebastelt was einfach stur die Daten mit Append in ne MemoBox schreibt um wirklich zu überprüfen ob die fehlenden Daten nicht wegen meiner Programmierung aufgetreten sind, aber auch das ergab das der BF Server stellenweiße totaler mist sendet. Aber wie machen das die Profis von All Seeing Eye oder Gamespy ? Ich verwende ja auch das Gamespy Protokoll für die Kommunikation mit den Gameservern und dem GameSpyMaster Server um aktuelle Serverlisten abzurufen. Die müssen ja auch mit dem Arbeiten was der Server übermittelt.
Echt mal Bahnhof

-
Zero01 schrieb:
....es liegt am UDP Protokoll
Naja es liegt an den Eigenschaften des Protokolls.
