Ich versuche grade einen Chat mit Elnet zu erstellen. Allerdings etwas umfangreicher als von mintpc hier beschrieben:http://www.lazarusforum.de/viewtopic.php?f=26&t=4397.
Wenn ich mein Programm im Servermodus starte und einen Client verbinde, läuft das so weit so gut. Trenne ich aber nun diesen Client (ordentlich über TCP), kackt der Server ab und meldet:
"Invalid buffersize 0 in Send."
Wenn ich eine Nachricht schicke erscheint diese am Server (wird dort auch ausgegeben) und am Client (die Nachricht wird am Client erst ausgegeben wenn der Server sie zurück sendet).
Das funktioniert also wie es soll! Egal ob mit festen String oder Verweis auf die Stringvariable.
Im Grunde genommen hängt es nur an einem Problem:
Und zwar akzeptiert Send Message leider keinen Verweis auf einen String, ein String selbst wird akzeptiert, dieses Problem taucht nur auf wenn sich ein Client abmeldet!
funktioniert nicht:
Code: Alles auswählen
//Server empfängt Nachricht
procedure TForm1.LTCPServerReceive(aSocket: TLSocket);
var EinNachricht:string;
begin
begin
aSocket.GetMessage(EinNachricht);
MemoChatWindow.Lines.Add(EinNachricht);
LTCPServer.IterReset;
while (LTCPServer.IterNext=true)do
LTCPServer.SendMessage(EinNachricht,LTCPServer.Iterator);
end;
end;
das hier funktioniert:
Code: Alles auswählen
//Server empfängt Nachricht
procedure TForm1.LTCPServerReceive(aSocket: TLSocket);
var EinNachricht:string;
begin
begin
aSocket.GetMessage(EinNachricht);
MemoChatWindow.Lines.Add(EinNachricht);
LTCPServer.IterReset;
while (LTCPServer.IterNext=true)do
LTCPServer.SendMessage('EinNachricht',LTCPServer.Iterator);
end;
end;
und zwar hängt es hier:
Code: Alles auswählen
LTCPServer.SendMessage(EinNachricht,LTCPServer.Iterator);
Code: Alles auswählen
LTCPServer.SendMessage('EinNachricht',LTCPServer.Iterator);

Ich weis echt nicht mehr weiter, ist essentieller Teil meines Chat Programmes, welches die vom Server empfangenen Nachrichten an alle Clients weiterleitet. Das kann ich nicht weg lassen.
Das is echt das einzige an dem es noch hängt, ansonsten ist das Ding fix und fertig, war ein Arsch voll Arbeit

Hier nochmal der ganze Quellcode wenns interessiert: