Hi,
bin ma wieder an nem Chat dran (ich weiß, es gibt viele^^).
Mein Source(client):
Delphi-Quellcode:
procedure Tfmain.TimerTimer(Sender: TObject);
var
Msg: TMessageRecord;
begin
if Client.Connected then
begin
Client.ReadBuffer(Msg, SizeOf(Msg)); // << Da gehts nimmer weiter
if Trim(Msg.Msg) <> '' then
begin
reChat.Lines.Add(Msg.From + ': ' + Msg.Msg);
end;
end;
end;
Intervall vom Timer ist 1.
Source(server):
Delphi-Quellcode:
procedure Tfmain.ServerExecute(AThread: TIdPeerThread);
var
Msg: TMessageRecord;
begin
AThread.Connection.ReadBuffer(Msg, SizeOf(Msg));
Clients.Broadcast(Msg);
end;
TMessageRecord:
Delphi-Quellcode:
TMessageRecord = record
From: ShortString;
Msg: WideString;
Color: Integer;
SysCommand: Boolean;
end;
Procedure Broadcast:
Delphi-Quellcode:
procedure TClients.Broadcast(MessageRecord: TMessageRecord);
var
i: Byte;
begin
for i := 1 to MAX_CLIENTS do
begin
try
if ClArray[i] <> nil then
ClArray[i].Connection.WriteBuffer(MessageRecord, SizeOf(MessageRecord),
True);
except
end;
end;
end;
(TClients ist von jfheins)
Warum geht das an der markierten Stelle nicht mehr weiter? Da bleibt der einfach stehen.
(Verwende Indy9)