Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
  #3  
Старый 13.02.2010, 11:41
Аватар для s0Creator
s0Creator s0Creator вне форума
Местный
 
Регистрация: 20.02.2008
Адрес: Московская область
Сообщения: 420
Репутация: 884
По умолчанию

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.
Не забудь, что это только наброски для иллюстрации.
Ответить с цитированием
 


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 00:48.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025