Недавно добавленные исходники

•  3D Designer  134

•  Sik Screen Capture  109

•  Patch Maker  92

•  Айболит (remote control)  113

•  ListBox Drag & Drop  85

•  Доска для игры Реверси  1 566

•  Графические эффекты  100

•  Рисование по маске  76

•  Перетаскивание изображений  79

•  Canvas Drawing  82

•  Рисование Луны  152

•  Поворот изображения  65

•  Рисование стержней  56

•  Paint on Shape  52

•  Генератор кроссвордов  60

•  Головоломка Paletto  75

•  Теорема Монжа об окружностях  113

•  Пазл Numbrix  56

•  Заборы и коммивояжеры  87

•  Игра HIP  66

•  Игра Go (Го)  51

•  Симулятор лифта  55

•  Программа укладки плитки  56

•  Генератор лабиринта  97

•  Проверка числового ввода  45

•  HEX View  101

•  Физический маятник  102

•  Задача коммивояжера  129

•  Автомобильная пробка  52

•  Квадратные сетки из слов  46

 
скрыть


Delphi FAQ - Часто задаваемые вопросы

| Базы данных | Графика и Игры | Интернет и Сети | Компоненты и Классы | Мультимедиа |
| ОС и Железо | Программа и Интерфейс | Рабочий стол | Синтаксис | Технологии | Файловая система |



Работа в фоне



Я пишу программу в Delphi, которая каждый час должна проверять размер файла. Это также предполагает, что в случае неактивности приложения оно должно работать сторожевым псом в фоновом режиме win 95 и NT. Как мне сделать это...?? Вот некоторый исходный код, который должен делать то, что вы хотите. Я его только что создал и еще не успел проверить, но что-то подобное я уже делал, так что это должно работать. Код допускает одно предположение, о котором вы должны отдавать себе отчет. Оно заключается в том, что приложение должно запускатьтся одновременно с Windows (может быть из группы автозапуска), так как код использует GetTickCount, возвращающий в миллисекундах время с момента старта системы, это необходимо для ежечасной инициализац ии кода выполнения задачи. По-моему это то, что вам нужно. Величина, возвращаемая GetTickCount имеет тип DWORD, но Delphi ее хранит как LongInt, поэтому большие значения могут иметь отрицательную величину (после примерно 25 дней). Данный эффект в алгоритм е проверки наступления часа неопределен (я действительно не считал это). Аналогично, значение будет повторяться в цикле каждые 49.7 дней и может появиться другой эффект, когда раз в 49.7 дней в одном реальном часе алгоритм сработает дважды. Надеюсь это ни как не скажется на вашей задаче. Во всяком случае разве это не то, что вы хотели? Успехов!


program Project1;

uses Messages, Windows;

{$R *.RES}

function KeepRunning: Boolean;
var
  Msg: TMsg;
begin
  Result := True;
  while PeekMessage(Msg, 0, 0, 0, PM_REMOVE) do
  begin
    if (Msg.Message = WM_QUIT) then
      Result := False;
    DispatchMessage(Msg);
  end;
end;

function OnTheHour: Boolean;
begin
  { Это действительно проверяется в течение одной секунды    }
  { (или меньше) для проверки наступления нового часа,       }
  { когда нам необходимо запустить нашу задачу на выполнение }
  Result := (GetTickCount mod
    (1 {hr} * 60 {min} * 60 {sec} * 1000 {msec}) < 1000);
end;

const
  filetocheck = 'c:\somedir\somefile.ext';
  magicsize = 1000000;
var
  f: file;
  size: longint;
begin
  { проверка наступления нового часа с момента запуска системы }
  while keeprunning do
  begin
    { проверяем наступление часа }
    if onthehour then
    begin
      { открываем файл с размером записи 1 байт }
      { и проверяем его размер                  }
      assignfile(f, filetocheck);
      reset(f, 1);
      size := filesize(f);
      closefile(f);
      { теперь проверяем изменение размера файла }
      if (size >= MAGICSIZE) then
      begin
        { Предпринимаем какие-то действия }
      end;
      { Теперь "сидим" в этом участке кода                 }
      { и ожидаем очередного часа, здесь можно             }
      { предусмотреть выход из программы или иное действие }
      while (KeepRunning and OnTheHour) do
        {ничего};
    end;
  end;
end.





Похожие по теме исходники

Nstruct (работа с DBF)

Работа с принтером

fwZIP - Работа с ZIP архивами




Copyright © 2004-2021 "Delphi Sources" by BrokenByte Software. Delphi World FAQ

Группа ВКонтакте   Facebook   Ссылка на Twitter