Информационный сервер для программистов: Исходники со всего света. Паскальные исходники со всего света
  Powered by Поисковый сервер Яndex: Найдется ВСЁ!
На Главную Pascal Форум Информер Страны мира
   Окружение OS    >>    age
   
 
 Executer - пример запуска задач по условию   Виктор Вагнер 06.01.1994

AGE - calculate age of file in days and return it as ERRORLEVEL



2k 
 

From: Vitus B. Wagner <vitus@agropc.msk.su> Organization: Agroecological problems Center Идея Executer просто носится в воздухе. Так, например в Speed Disk который был приведен в качестве примера, данная возможность просто встроена. Тем не менее отдельный executer тоже вещь полезная, так как бывают процедуры которые требуют запуска bat-файла или программы, не обладающей такими возмож ностями управления собственным запуском, как NDD или AdInfo. Однако, предложенная уважаемым root@agrres.tula.su реализация обладает рядом недостатков. Во-первых, большой размер программы Во-вторых, неэкономное расходование дискового пространства - требуется целый кластер на винчестере для хранения всего лишь даты В-третьих - черезмерно узкая область применения. В-четвертых, посылая программу в группу comp.lang.pascal было бы неплохо предоставить исходный текст, что сильно облегчило бы ее анализ, а также помогло тем, кто еще не умеет писать такие вещи левой ногой за пять минут. Что же касается собственно executer то тут есть несколько более интерес- ных решений. Во-первых, все это можно реализовать только средствами команд- ного языка DOS (пример можно найти в коллекции Batch-евских трюков Batch Tricks 39 - файл tsbat39.arj есть на многих московских BBS), но это тема для другой телеконференции. Во-вторых, для контроля даты последнего выполнения программы можно воспользоваться датой создания/изменения какого-нибудь файла, например Image.dat в случае SpeedDisk. Если же программа такого файла не создает, то можно воспользоваться пустым файлом, специально для этой цели созданным, благо файл нулевой длины кластера не занимает. Для создания пустого файла из Pascal рекомендую последовательность Assign(F,FileName); Rewrite(F); Close(F); а дату поставит операционная система. Для запуска программы удобнее воспользоваться Dos-овской командой if ErrorLevel - это значительно упрощает программу, и к тому же не занимает память самим executer'ом. Привожу свою программу, предназначенную для этой цели. Она называется age и возвращает в качестве ErrorLevel возраст указанного в командной строке файла в днях. Использовать ее в качестве Executer можно так: age c:image.dat if errorlevel 7 Speedisk c: (Dos будет считать условие выполненным, если ErrorLevel >= 7)