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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 13.02.2010, 05:16
Аватар для ryderx34
ryderx34 ryderx34 вне форума
Активный
 
Регистрация: 22.01.2010
Сообщения: 211
Версия Delphi: 7, 2010
Репутация: 1349
По умолчанию Консольное приложение

1. Как в консольном приложении использовать таймер ?
2. Можно ли обновлять строки, т.е. заменить уже написанную строку, вместо того чтобы писать новую ?
3.Можно ли очистить окно от всех написанных ранее строк ?
Ответить с цитированием
  #2  
Старый 13.02.2010, 07:08
Аватар для Aristarh Dark
Aristarh Dark Aristarh Dark вне форума
Модератор
 
Регистрация: 07.10.2005
Адрес: Москва
Сообщения: 2,907
Версия Delphi: Delphi XE
Репутация: выкл
По умолчанию

1. Да
2. Да
3. Да
__________________
Некоторые программисты настолько ленивы, что сразу пишут рабочий код.

Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты.
Ответить с цитированием
  #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, время: 21:25.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

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