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)
|