Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi IdTCPServer: Systemfehler code: 1400. Ungültiges Fensterhand (https://www.delphipraxis.net/25615-idtcpserver-systemfehler-code-1400-ungueltiges-fensterhand.html)

NBG 9. Jul 2004 10:56


IdTCPServer: Systemfehler code: 1400. Ungültiges Fensterhand
 
Ich habe eine Serveranwendung aufgebaut.
Sie sieht so aus:

beim Form.Create:
Delphi-Quellcode:
  Clients := TThreadList.Create;
  IdTCPServer.Active := True;
beim Form.IdTCPServer.Execute:
Delphi-Quellcode:
  if (AThread <> nil) and (not AThread.Terminated) and (AThread.Connection.Connected) then
  begin
    Code := AThread.Connection.ReadInteger;
    case Code of
      GET_CLIENTID: AddClient(AThread);
      ... // Verschidene Anweisungen an den Server.
    end;
  end;
beim Form.AddClient:
Delphi-Quellcode:
var
  Client: PClient;
  ID   : Cardinal;
  errorcode: Integer;
begin
  errorcode:=0;
  try
    with Clients.LockList do
    begin
      try
        New(Client);
        Client^.ID := LfdID;
        Inc(LfdID);
        Client^.Report := nil;
        Add(Client);
      finally
        Clients.UnlockList;
      end;
    end;
  finally
    AThread.Connection.WriteInteger(errorcode);
  end;
  AThread.Connection.WriteInteger(Client^.ID);
end;
Beim Form.OnDestroy
Delphi-Quellcode:
  IdTCPServer.Active := false;

  with Clients.LockList do
  try
    for i := 0 to Count-1 do
    begin
      Dispose(Items[i]);
    end;
    Clients.Clear;
  finally
    Clients.UnlockList;
  end;

  Clients.Free;

Die Clientanwendung macht folgendes:

Delphi-Quellcode:
  with IdTCPClient1 do
  begin
    Connect;
    WriteInteger(GET_CLIENTID);
    if ReadInteger <> 0 then exit;
    ID := ReadInteger;
    ... //ein par befehle an den Server
    Disconnect;
  end;
Funktioniert wunderbar! ARBER! wenn ich den Server schliese bekomme ich volgende Fehlermeldung:
"Systemfehler code: 1400. Ungültiges Fensterhand"

Was ich schon alles Probiert habe:
Ich habe mal einen ThreadManager hinzugefügt.
Es sind aber bei beendigung des Servers, keinerlei Threads in der Liste.
in der IdServer.Treads auch nicht!

Hat jemand sonst noch eine Idee?
wäre cool wenn mir einer Helfen könte!

Thx!


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:47 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz