Avatar billede mora Nybegynder
02. oktober 2002 - 22:03 Der er 1 kommentar og
1 løsning

Threads

Argh :)  har totalt glemt alt om hvordan man laer tråde i delphi :/

Har oprettet tråden "getstr".
procedure getstr.Execute;
var
b : string;
begin
  b:=Form1.IdTCPClient1.ReadLnWait;
  if (b<>'') then
    Form1.Memo1.Lines.Add(b);
end;

- Den skulle vha. Form1.idTCPClient1 (en indy tcp komponent) tjekke om der er nyt data, og hvis der er så sende det til memo1 på form1.

I form1 kalder jeg den med en timer
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Timer1.Enabled:=False;
Unit2.getstr.Create();
Timer1.Enabled:=True;
end;


men Unit2.getstr.Create(); kræver et argument, hvad skal der være ?



- Er åben for andre forslag, skal blot kunne læse en TCP stream og behandle den (uden at den primære form låses).
Avatar billede borrisholt Novice
02. oktober 2002 - 22:10 #1
For det første så ..

Long time no se ... :-)

Nå men fpr det første så skal du ikke oprette din tråd i en Timer så forsvinder havlvdelen af fidusen. I stedet for skal du lave et u endeligt loop i din execute :


procedure getstr.Execute;
var
  b : string;
begin
  while not Terminated do
  begin
    b:=Form1.IdTCPClient1.ReadLnWait;
    if (b<>'') then
      Form1.Memo1.Lines.Add(b);
  end;
end;

Når du så er trært af den kalder du blot Terminate på din tråd ...

Det argument der skal ind i Constructoren på en TThread er en Boolsk værdi for om din tråds skal starte susspederet, eller ej. Det er så i den siste ende dit valg ...


Jens B
Avatar billede mora Nybegynder
02. oktober 2002 - 22:32 #2
:-) virker perfekt.

takker ;)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester