вторник, 10 июля 2012 г.

Библиотека для работы с командной строкой NCommandLineParser 0.1.1. Initial Release

Выдалось немного свободного времени для реализации задуманного, в частности решил всё же реализовать библиотеку для работы с командной строкой в Delphi, да блог пополнить, зря заводил чтоли :))).

Это стартовый релиз, на данный момент библиотека умеет парсить командную строку вида:
-<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).

Комментариев нет:

Отправить комментарий