Vielen Dank für die Antwort
wie gesagt ich hab den code für die Anzeige hier ausgehöhlt
Das Original
Client
Delphi-Quellcode:
procedure BoTCPClient.Execute;
begin
Client:=TIdTCPClient.Create(
nil);
Client.Host:=Host;
Client.Port:=Port;
Synchronize(GetHand);
i:=0;
while not terminated
do
begin
if not(Client.Connected)
then
begin
try
Client.Connect;
// Anmeldestring senden
Synchronize(VerbA);
Client.IOHandler.
Write(Anmeld+#10);
Synchronize(Anm);
PostMessage(hwd,SKY_CONNECT,0,1);
i:=0;
except
on E:
Exception do
begin
Emsg:=E.
Message;
inc(i);
Synchronize(Fehler);
PostMessage(hwd,SKY_CONNECT,0,2);
end;
end;
end;
if Client.Connected
then
begin
if cmd=1
then
begin
{Anmeldestring senden}
Client.IOHandler.
Write(Anmeld+#10);
Synchronize(Anm);
cmd:=0;
end;
if cmd=2
then
begin
{Bulk-Kommando senden}
Client.IOHandler.
Write('
BULK'+DateTimeToStr(Date)+'
00:00:00-'+
DateTimeToStr(Date+1)+'
23:59:59'+#10);
Synchronize(Bu);
cmd:=0;
end;
if cmd=3
then
begin
{beliebiges Kommando senden}
Client.IOHandler.
Write(command+#10);
Synchronize(Bu);
cmd:=0;
end;
while not Client.IOHandler.InputBufferIsEmpty
do
begin
{es gibt noch was zu lesen}
text:=Client.IOHandler.ReadLn;
synchronize(UpdateMemo);
end;
end;
end;
if Client.Connected
then
begin
// Thread terminated
Client.Disconnect;
end;
Synchronize(VerbE);
PostMessage(hwd,SKY_CONNECT,0,0);
end;
Server
Delphi-Quellcode:
procedure TForm1.TCPServerExecute(AContext: TIdContext);
var
I: Integer;
st:integer;
begin
{Server Thread ausführen}
text:=AContext.Connection.IOHandler.ReadLn;
REdit.Lines.Add(DateTimeToStr(now)+': Nachricht: '
+text);
while lauf do
begin
case send of
1: begin
// Befehl senden
AContext.Connection.IOHandler.Writeln(Edit2.Text);
send:=0;
end;
2: begin
// einzelnen Datensatz senden
st:=-1;
for I := 0 to sl.Count - 1 do
begin
if DFSuche(sl[i],'DatabaseId')=ListBox1.Items[ListBox1.ItemIndex] then
begin
st:=i;
break;
end;
end;
if st<>-1 then
AContext.Connection.IOHandler.Writeln(sl[st]+#18);
send:=0;
end;
3: begin
// alle Datensätze senden
for I := 0 to sl.Count - 1 do
begin
AContext.Connection.IOHandler.Writeln(sl[i]+#18);
end;
send:=0;
end;
end;
if Copy(text,1,4)='BULK' then
begin
for I := 0 to sl.Count - 1 do
begin
AContext.Connection.IOHandler.Writeln(sl[i]+#18);
end;
end;
end;
end;
die Auslastung verändert sich dabei leider überhaupt nicht
Albrecht