Hallo,
ich hab nochmal deinen Code hier:
Delphi-Quellcode:
Source:
type
TMyThreadClass = class(TThread)
private
FClient : TSomeClient;
FMemo : TSomeVCLControl;
procedure UpdateMemo;
protected
s: string;
procedure Execute;override;
public
constructor Create(Host: string; Port: integer; const AMemo: TSomeVCLControl);
end;
constructor TMyThreadClass.Create(Host: string; Port: integer; const AMemo: TSomeVCLControl);
begin
inherited Create(True);
Assert(Assigned(AMemo));
FClient:= TIdTCPClient.Create(nil);
FClient.Host:=Host;
FClient.Port:=Port;
//copy references to member vars
FMemo:= AMemo;
//start thread
Resume;
end;
procedure TMyThreadClass.Execute;
begin
try
FClient.Connect;
while (not Terminated) and (FClient.Connected) do
begin
s:=FClient.Readln;
Synchronize(UpdateMemo);
end;
finally
FClient.Free;
end;
end;
procedure TMyThreadClass.UpdateMemo;
begin
//will be executed within the mainthread
FMemo.Lines.Append(s);
end;
hier wird ja ein client created, was hat der mit meinem tatsächlichen client im mainthread zu tun?
und wenn ich den create, muss ich ja auch dafür port und host festlegen. aber die werden ja im mainthread über edits festgelegt. wie bekomm ich da werte?
Gruß
Spurius