[Delphi] Klasa TThread i .. teoria

0

W rakcie czytania książki Adama - Delphi6. Cwiczenia praktyczne naunęło mi się jedno pytanie. Na stronie
46/47 Autor podaje przykładowy program przybliżający klasę TThread:

[]
implementation
{$R*dfm}
type
TMyThread = class (TThread)
protected
procedure Execute; override;
end;

procedure TMyThread.Execute;
var
i:Integer
begin
FreeOnTerminate
:=True;
for I:= 0 to 100000
begin
MainForm.Lebel1.Caption := 'Iteracja nr: ' IntToStr(i);
end;
end;

[]

Natomiast w kolejnym ćwiczeniu nr 3.2 rozszerzając ten programik o kolejne procedury Autor pisze :
" Aby utworzyć ten program ,należy stworzyć zmienna globalną MyThread"

To wydaje mi się jasne. natomiast pytanie dotyczy części pierwszej - dlaczego w tym wypadku obeszło się
bez tworzenia egzempalrza klasy TMyThread czyli zmiennej globalnej MyThread , a wystarczyła sama
definicja klasy?
--Pzdr.
W.

0

Tu jest jedynie definicja klasy. Ale nigdzie nie wywołujesz obiektu i jego własności. Żeby wywołać własności musisz go najpierw stworzyć, czyli zadeklarować zmienną globalną i podstawić utworzony obiekt:
var
MyThread: TMyThread;
...
begin
MyThread := TMyThread.Create(blabla);
...

Możesz też od razu:
TMyThread.Create(blabla)
ale wówczas nie masz możliwości kontroli wątka (nie ma się jak odwołać). Czasem tak się tworzy (jeżeli wątek ma ustawione FreeOnTerminate).--Jest jeszcze jeden błąd ... :)

Apel: Piszcie w tematach o jaki język programowania chodzi np. : [Delphi], [C++], itp.

1 użytkowników online, w tym zalogowanych: 0, gości: 1