![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
||||
|
||||
|
1. Как в консольном приложении использовать таймер ?
2. Можно ли обновлять строки, т.е. заменить уже написанную строку, вместо того чтобы писать новую ? 3.Можно ли очистить окно от всех написанных ранее строк ? |
|
#2
|
||||
|
||||
|
1. Да
2. Да 3. Да |
|
#3
|
||||
|
||||
|
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.Код:
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. |