Chciałbym w programie konsolowym utworzyć obiekt typu TTimer. W VCL muszę użyć unitu ExtCtrls, a w aplikacji konsolowej?
TTimer jest zdefiniowany w module ExtCtrls
, zatem właśnie ten moduł musisz wykorzystać.
Nie rozpoznaje modułu ExtCtrls
. Aplikacja konsolowa w Delphi Tokyo. Zawsze pisałem programiki okienkowe wykorzystujące VCL, a tu stawiam pierwsze kroki.
W Tokyo przy aplikacjach konsolowych gdy chcesz wykorzystać moduł VCL musisz podać jego pełną nazwę Vcl.ExtCtrls
, bo Delphi się nie domyśli (chyba nie przewidzieli, że ktoś w konsoli będzie szalał z VCL).
Wpisuję Vcl.ExtCtrls
do Uses, ale nie też nie rozpoznaje modułu.
To znaczy, że w aplikacjach konsolowych nie używa się timerów? Dlaczego?
Ponieważ masz do dyspozycji zwyczajne wątki (TThread
).
Dziękuję za odpowiedź. Tak się właśnie domyślałem.
didzni napisał(a):
Wpisuję
Vcl.ExtCtrls
do Uses, ale nie też nie rozpoznaje modułu.
Bzdura moduł musi widzieć i naprawdę nie wiem co robisz źle.
didzni napisał(a):
To znaczy, że w aplikacjach konsolowych nie używa się timerów? Dlaczego?
Można używać ale jest to utrudnione, ze względu na konieczną obsługę pętli komunikatów.
Np. https://stackoverflow.com/questions/12026951/using-vcl-ttimer-in-delphi-console-application
Oczywiście, że działa. Może nie najlepszy przykład ale działa:
program ConsoleTimer;
{$APPTYPE CONSOLE}
{$R *.res}
uses
System.SysUtils, Vcl.ExtCtrls, Vcl.Forms;
type
TTimerClass = class
procedure OnTimerProc(Sender: TObject);
end;
var
T1: TTimer;
TimerClass: TTimerClass;
I: Integer;
procedure TTimerClass.OnTimerProc(Sender: TObject);
begin
Writeln('OnTimer');
end;
begin
try
TimerClass := TTimerClass.Create;
try
T1 := TTimer.Create(nil);
try
T1.OnTimer := TimerClass.OnTimerProc;
T1.Enabled := True;
for I := 0 to 30 do
begin
Application.ProcessMessages;
Sleep(100);
end;
Writeln(':)');
Sleep(2000);
finally
T1.Free;
end;
finally
TimerClass.Free;
end;
except
on E: Exception do
Writeln(E.ClassName, ': ', E.Message);
end;
end.
Fakt, da się. Zapomniałem o Vcl.Forms
. Przeanalizowałem przykład. Już nie będę szalał. Będę używał wątków. Z tym Timerem to tak z przyzwyczajenia. A plik wynikowy z VCLem jest trzy razy większy. O, już jadą po mnie......