Einzelnen Beitrag anzeigen

Benutzerbild von glkgereon
glkgereon

Registriert seit: 16. Mär 2004
2.287 Beiträge
 
#14

Re: TThread.Create erzeugt einen Stack Overflow?

  Alt 3. Mär 2007, 21:45
Zitat von mr2:
Du solltest FTCP auch irgendwo (am besten im Konstruktor ) erzeugen, wenn es sich dabei um ein Objekt handelt, sonst bekommst Du zwangsläufig eine Zugriffsverletzung.

mr2
*möp*
Delphi-Quellcode:
procedure TChatClient.Connect(Host: String; Port: Integer);
var CT: TConnectThread;
    T: Cardinal;
    TT: TThread;
begin
  if FIdTCP.Connected then Exit;
  try
    CT:=TConnectThread.Create(True);
    CT.FreeOnTerminate:=True;
    CT.TCP:=Fidtcp; // <-- !!!
    CT.Host:=Host;
    CT.Port:=Port;
    T:=GetTickCount+5000;
    CT.Resume;
    while (not CT.Terminated) do
    begin
      FOnSleep;
      if (T-GetTickCount<0) or (Fidtcp.Connected) then Break;
      Sleep(50);
    end;
    CT.Terminate;
    if not Fidtcp.Connected then raise EConnectException.Create('');
    FListeningThread.Resume;
  except
    raise EConnectException.Create('');
  end;
end;
»Unlösbare Probleme sind in der Regel schwierig...«
  Mit Zitat antworten Zitat