Выдалось немного свободного времени для реализации задуманного, в частности решил всё же реализовать библиотеку для работы с командной строкой в Delphi, да блог пополнить, зря заводил чтоли :))).
Т.е. каждый очередной параметр начинается с символа "-" или "/", а далее через пробел следует значение параметра. Классика в общем :) Различного рода способы задания, например: -switchValue /switch:Value и т.п. для упрощения кода не стал реализовать, хотя... не сильно сложно и реализовать :)
В общем в архиве имеется программа пример, которая показывает все "основные возможности" :))
В следующих релизах планирую добавить регистрозависимые ключи(имена параметров), поддержку ключа -h(/help) и автогенерацию хелпа, массивы значений(-out file1 file2 ... fileN)... Возможно что-то ещё всплывёт по мере написания/использования библиотеки или поступит какое предложение по функционалу.
Ссылка для скачивания: NCMDLParser Latest(current: 0.1.1).
Это стартовый релиз, на данный момент библиотека умеет парсить командную строку вида:
-<switch> <value> /<switch2> <value2>
Т.е. каждый очередной параметр начинается с символа "-" или "/", а далее через пробел следует значение параметра. Классика в общем :) Различного рода способы задания, например: -switchValue /switch:Value и т.п. для упрощения кода не стал реализовать, хотя... не сильно сложно и реализовать :)
В общем в архиве имеется программа пример, которая показывает все "основные возможности" :))
var
Options: TSampleAppOptions;
begin
try
Options := TSampleAppOptions.Create;
try
NCMDLParser.Parse(Options);
Writeln('Command line: ', GetCommandLine);
WriteLn('');
WriteLn('The DB alias: "', Options.DBAlias, '"');
WriteLn('The DB administrator password: "', Options.Password, '"');
Writeln('Maximum number of operations: "', Options.Count, '"');
Readln;
finally
Options.Free;
end;
except
on E: Exception do
Writeln(E.ClassName, ': ', E.Message);
end;
end.
Для хранения параметров должен использоваться класс. Структура(record) потребует создание generic версии метода Parse, либо создание специальной Box-структуры(TValue не подойдёт) для передачи экземпляра записи в метод. Generic метод - предположительно лёгкий вариант(если вообще будет работать, структуры всё же коварный тип данных в плане передачи их куда-либо, постоянно копируются), а boxing интересный :)В следующих релизах планирую добавить регистрозависимые ключи(имена параметров), поддержку ключа -h(/help) и автогенерацию хелпа, массивы значений(-out file1 file2 ... fileN)... Возможно что-то ещё всплывёт по мере написания/использования библиотеки или поступит какое предложение по функционалу.
Ссылка для скачивания: NCMDLParser Latest(current: 0.1.1).
Комментариев нет:
Отправить комментарий