2-3. Смотри
здесь раздел
DOS и Консоль
1.
- TTimer можно создать программно.
НО чтобы он срабатывал, надо перевести приложение в режим обработки сообщений и строить его практически по принципу работы с формами ( только экран у тебя будет черный и все делать в ручную ).
Код:
program console_test;
{$APPTYPE CONSOLE}
uses
SysUtils, Windows, Forms, ExtCtrls;
var
myTimer: TTimer;
count: Integer = 0;
type
TTimerImpl = class
class procedure DoOnTimer(Sender: TObject);
end;
{ TTimerImpl }
class procedure TTimerImpl.DoOnTimer(Sender: TObject);
begin
writeln('Timer is On');
Inc(count);
if count > 10 then
Application.Terminate;
end;
begin
{ TODO -oUser -cConsole Main : Insert code here }
myTimer := TTimer.Create(Application);
// try
myTimer.Interval := 500;
myTimer.OnTimer := TTimerImpl.DoOnTimer;
myTimer.Enabled := True;
with Application do
repeat
try
HandleMessage;
except
HandleException(Application);
end;
until Terminated;
{ finally
myTimer.Free;
end; // }
end.
- Создавать дополнительные потоки которые просыпаясь через заданый интервал ( sleep(milliseconds) ) будут что то делать, не забывая синхронизировать хотя бы вывод на экран.
Код:
program console2_test;
{$APPTYPE CONSOLE}
uses
SysUtils, Classes;
type
TMyThread = class(TThread)
procedure Execute; override;
end;
{ TMyThread }
procedure TMyThread.Execute;
var
count: Integer;
begin
count := 0;
for count := 0 to 10 do
begin
if Terminated then
break;
sleep(500);
writeln('MyThread is On');
end;
halt;
end;
begin
{ TODO -oUser -cConsole Main : Insert code here }
TMyThread.Create(false);
sleep(10000);
end.
Не забудь, что это только наброски для иллюстрации.