Chat / rtl60.bpl
-
Guten Abend,
ich programmiere imoment einen Chat es erscheint nur leider eine Fehlermeldung (siehe unten), kann mir jemand helfen ?void __fastcall TForm1::Button4Click(TObject *Sender) { paket->name="Administrator"; paket->type=1; paket->text=Memo2->Text; for (int i=0;i<ServerSocket1->Socket->ActiveConnections;i++) ServerSocket1->Socket->Connections[i]->SendBuf(paket,sizeof(paket)); AddMessage(RichEdit1,"Administrator",Memo2->Text); Memo2->Clear(); ScrollDown(RichEdit1); }
es erscheint die Fehlermeldung:
Im Projekt X ist eine Exeption der Klasse ... aufgetreten. Zugriffsverletzung im Modul rtl60.bpl...
-
Wäre ganz gut wenn du uns noch sagst welche Klasse
-
...der Klasse EAccessViolation
-
Hallo
Aus deinem Codeauszug ist für mich kein Grund für den Fehler zu sehen. Da du aber mit paket auch eine globale/Member-Variable benutzt, ist für uns hier auch nicht alles relevante zu sehen. Du must den Programmablauf schon selber rekonstruieren, um die eigentliche Ursache herauszufinden. Dazu brauchst du den Debugger.
bis bald
akari
-
Werd ich tun, danke für die Antworten.
mfg
-
Mir fällt da spontan eine Fehlerquelle auf:
[cpp]
paket->name="Administrator";ServerSocket1->Socket->Connections[i]->SendBuf(paket,sizeof(paket));
[/cpp]Bitte poste mal die Defintion von paket. Vermutlich hängt das nicht direkt mit deinem Fehler zusammen, aber wer weiss...
-
bool switcher=1; AnsiString Banlist[100]; bool Banactive=false; bool Multiactive=false; int BanCount=0; AnsiString IPList[100]; AnsiString NickList[100]; struct data { AnsiString text; AnsiString name; int type; //1=Normalpost; 2=Servermeldungen 3=Willkommen 4=PM 5=Nickname 6=Nicknametausch AnsiString dest; //Für PMs AnsiString IPList[100]; AnsiString NickList[100]; }; data *paket;
-
sebastian2549 schrieb:
bool switcher=1; AnsiString Banlist[100]; bool Banactive=false; bool Multiactive=false; int BanCount=0; AnsiString IPList[100]; AnsiString NickList[100]; struct data { AnsiString text; AnsiString name; int type; //1=Normalpost; 2=Servermeldungen 3=Willkommen 4=PM 5=Nickname 6=Nicknametausch AnsiString dest; //Für PMs AnsiString IPList[100]; AnsiString NickList[100]; }; data *paket;
Du kannst die data Struktur nicht per addressof() und sizeof() operator versenden, da sie keine POD Datenstruktur ist. Du musst das Paket in irgendeiner Form serialisieren und den serialisierten Speicher versenden, dazu könnte TMemoryStream in Frage kommen.
Schönes Wochenende.