Registriert: Di Nov 29, 2005 21:11 Beiträge: 88 Wohnort: Bonn
Moin!
Ich programmiere an einem kleinen Netzwerk-Spiel in SDL.
Es hat soweit alles schön geklappt, ich programmierte fröhlich vor mich hin, als mir plötzlich eine AccessViolation um die Ohren gehauen wird.
Das ganze passiert bei SDLNet_CheckSockets, was mich wundert, weil die Funktion doch eigentlich keinen Grund hat mit Exceptions zu wwrfen...
Bevor ich die "case cmd of" beim client eingebaut habe, funktionierte alles bestens
allerdings habe ich danach noch ein paar sachen geändert, ich kann nicht mehr nachvollziehen, welche änderung für den fehler verantwortlich ist.
und die accessviolation tritt nur auf, wenn ich die daten auch vom socket lese. wenn ich die zeilen im cmd:100 case auskommentiere, passiert nichts
Ich hoffe, dass hier jemand unterwegs ist, der neben openGl auch ein bisschen SDL Ahnung hat - vielleicht ist es ja auch ein grundsätzlicher fehler, der mir da unterluafen ist...
aber im moment steh ich voll aufm Schlauch
Registriert: Do Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
Also mit SDL_net kenne ich mich gar nicht aus. Aber das Problem klingt für mich eher so als ob du dir einen Speicherbereich zerschießt. Ich gehe mal davon aus, dass myMap ein dynamisches Array ist? Dann versuch mal folgendes @myMap[0]. Damit erzwingst du die Benutzung des Datenbereiches des Arrays. Denn ein dynamisches Array ist normal auch nur ein Pointer. Und wenn die Variable in der Nähe von dem Soket definiert wurde liegen die Speicherbereiche ziemlich nebeneinander. Wenn du jetzt an die Adresse von myMap Daten schreibst überschreibst du auch andere Variablen. Und nicht die Daten auf die er zeigt.
So ist zum Beispiel diese beiden Sachen auch unterschiedlich.
Code:
FillChar(DynArray, count, wert);// geht nicht dynarray ist anschließen tot
FillChar(DynArray[0], count, wert);// geht
Du kannst das auch selber im Debugger überprüfen. Einfach mal vor SDLNet_TCP_Recv einen Haltepunkt setzen und dir anschauen ob der wert (Poiner) von mySocket verändert wurde.
Mitglieder in diesem Forum: 0 Mitglieder und 10 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.