Witam ..
Mam dość nietypowy problem z klasą thread ?
TWatek = class(TThread)
private
//
protected
procedure Execute; override;
public
FWynik: string;
constructor create;
procedure ThreadDone(Sender: TObject);
end;
constructor TWatek.Create
begin
inherited Create (true);
OnTerminate := ThreadDone; // tu jest moja procedura obsługująca, jej zawartość [ label1.caption := 'done thread'; ]
FCountTo := '';
end;
procedure TWatek.Execute;
var i: integer;
begin
FreeOnTerminate := true;
// jakieś obliczenia
FWynik := 'Tu przypisuje sobie wynik tych obliczeń ...';
end;
Teraz w kodzie buttona:
var
watek: TWatek;
begin
watek := TWatek.Create; // suspended
watek.resume;
Caption := watek.FWynik; // Tu powinien byc przypisany wynik ....
end;
do Captona powinien się przypisać wynik tego mojego wątku ... [ w moim przypadku string ] a nic się nie przypisuje ?? watek.FWynik jest pusty !!!!.
Jeśli ustawie w create mojego wątku FWynik := 'test'; i przypisze tak: Caption := watek.FWynik to do Captiona przypisze test.
Dlaczego nie jest przypisana wartość do zmiennej FWynik w środku procedury execute ??.
[!!!] Ważne jest zeby wynik obliczeń przypisywało do FWynik
Proszę o pomoc w wyjasnieniu tej sytuacji dla mnie dziwnej ?