Программа FILTER DPR


{ FILTER.DPR — основная программа фильтра Автор: Джим Мишель Дата последней редакции: 04/05/97 } {$APPTYPE CONSOLE} program filter; uses Windows, CmdLine; const nOptions = 4; Options : Array [1..nOptions] of OptionRec = ( (OptionChar : "i"; Option : otFilename; Filename : ""), (OptionChar : "o"; Option : otFilename; Filename : ""), (OptionChar : "n"; Option : otInt; Value : 36), (OptionChar : "d"; Option : otBool; OnOff : False) );
var cRslt : Boolean; Rec : pOptionRec; begin cRslt := CmdLine.ProcessCommandLine (@Options, nOptions);
WriteLn("ProcessCommandLine returned ", cRslt);
Rec := CmdLine.GetOptionsRec (@Options, nOptions, "i");
WriteLn ("i = ", Rec^.Filename);
Rec := CmdLine.GetOptionsRec (@Options, nOptions, "o");
WriteLn ("o = ", Rec^.Filename);
Rec := CmdLine.GetOptionsRec (@Options, nOptions, "n");
WriteLn ("i = ", Rec^.Value);
Rec := CmdLine.GetOptionsRec (@Options, nOptions, "d");
WriteLn ("d = ", Rec^.OnOff);
Write("Press Enter...");
ReadLn; end.

После инициализации таблицы параметров (это происходит в секции const) вызывается функция ProcessCommandLine, которая читает аргументы командной строки и сохраняет значения параметров в таблице. Затем программа выводит результат, возвращенный функцией ProcessCommandLine, вместе со значени ями всех параметров.

Попробуйте задавать этой программе различные командные строки. Не ограничивайтесь правильными строками и обязательно введите несколько неправильных, чтобы убедиться в корректной обработке ошибок. Могу предложить несколько вариантов:

-iInFile.txt -oOutFile.txt -n995 -d{правильная строка}

-n8.94 {Error: integer expected}
-x {Invalid option character: x}

Обобщенный анализатор командных строк, содержащийся в модуле CmdLine, позволяет очень легко получить параметры нашей программы. Достаточно заполнить таблицу и передать ее функции ProcessCommandLine, которая и выполнит всю необходимую работу. Все, что от вас требуется, - проследить за тем, чтобы все необходимые параметры были заданы, и присвоить значения внутренним переменным программы в соответствии с указанными параметрами. Поверьте, это намного проще, чем писать отдельный анализатор для каждой программы.



Содержание раздела