Yes, the thing is that I would like to avoid storing it in separate field, just to increase readability. However even setting FTimedTask does not work me.
I've attached the example with source code.
Thanks for helping me out:)
unit uMain;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, OtlTask, OtlTaskControl, Spin;
type
TfrmPeriodicTask = class(TForm)
btnStartPeriodicTask: TButton;
seSeconds: TSpinEdit;
lblSecondsInterval: TLabel;
procedure btnStartPeriodicTaskClick(Sender: TObject);
procedure seSecondsChange(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
FTask: IOmniTaskControl;
FTimedTask: TOmniWorker;
FSeconds: Cardinal;
public
{ Public declarations }
end;
type
TTimedTask = class(TOmniWorker)
public
procedure PeriodicLog;
end;
var
frmPeriodicTask: TfrmPeriodicTask;
implementation
{$R *.dfm}
procedure TfrmPeriodicTask.btnStartPeriodicTaskClick(Sender: TObject);
begin
FTimedTask := TTimedTask.Create();
FTask := CreateTask(FTimedTask)
.SetTimer(1, FSeconds*1000, @TTimedTask.PeriodicLog)
.Run;
end;
{ TTimedTask }
procedure TTimedTask.PeriodicLog;
procedure WriteToFile(const LogFilePath, LogMessage: String);
var
LogFile: TextFile;
begin
{$i-}
try
ForceDirectories(ExtractFileDir(LogFilePath));
AssignFile(LogFile,LogFilePath);
Append(LogFile);
if IOresult <> 0 then
Rewrite(LogFile);
Writeln(LogFile, LogMessage);
finally
CloseFile(LogFile);
end;
{$i+}
end;
begin
WriteToFile(ExtractFilePath(ParamStr(0)) + 'LogFile.txt', DateTimeToStr(Now));
end;
procedure TfrmPeriodicTask.FormCreate(Sender: TObject);
begin
FSeconds := 1;
end;
procedure TfrmPeriodicTask.seSecondsChange(Sender: TObject);
begin
FSeconds := seSeconds.Value;
FTimedTask.Task.SetTimer(FSeconds * 1000); //does not work
//FTask.SetTimer(FSeconds * 1000); //does not work
end;
end.