Einzelnen Beitrag anzeigen

NBG

Registriert seit: 21. Okt 2003
Ort: HH
19 Beiträge
 
#1

IdTCPServer: Systemfehler code: 1400. Ungültiges Fensterhand

  Alt 9. Jul 2004, 10:56
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!
  Mit Zitat antworten Zitat