Spec-Zone.ru › Nim

std/cmdline

Source Edit

Этот модуль содержит системные средства для чтения параметров командной строки.См. также:

  • модуль parseopt для анализа командной строки, выходящего за рамки процедуры parseCmdLine

Импорты

winlean

Процедуры

proc commandLineParams(): seq[string] {....raises: [], tags: [ReadIOEffect],
                                        forbids: [].}

Удобная процедура, возвращающая параметры командной строки.

Возвращает только параметры. Если вам нужно получить имя исполняемого файла приложения, вызовите getAppFilename().

Доступность: в Posix нет портативного способа получить командную строку из DLL, поэтому процедура не определена в этой среде. Вы можете проверить её доступность с помощью declared().

См. также:

  • модуль parseopt
  • процедура parseCmdLine
  • процедура paramCount
  • процедура paramStr
  • процедура getAppFilename

Примеры:

when declared(commandLineParams):
  # Use commandLineParams() here
else:
  # Do something else!
Source Edit
proc paramCount(): int {....tags: [ReadIOEffect], raises: [], forbids: [].}

Возвращает количество аргументов командной строки, переданных при запуске приложения.

В отличие от argc в C, если ваша программа была запущена без параметров, она вернёт ноль. Вы можете запросить каждый отдельный параметр с помощью процедуры paramStr или получить все сразу с помощью процедуры commandLineParams.

Доступность: при генерации динамической библиотеки (см. --app:lib) в Posix эта процедура не определена. Проверьте доступность с помощью declared().

См. также:

  • модуль parseopt
  • процедура parseCmdLine
  • процедура paramStr
  • процедура commandLineParams

Примеры:

when declared(paramCount):
  # Use paramCount() here
else:
  # Do something else!
Source Edit
proc paramStr(i: int): string {....tags: [ReadIOEffect], raises: [], forbids: [].}

Возвращает i-й аргумент командной строки, переданный при запуске приложения.

i должен быть в диапазоне 1..paramCount(), в противном случае будет выброшено исключение IndexDefect. Вместо итерации по paramCount() с этой процедурой вы можете вызвать удобную commandLineParams().

Аналогично argv в C, можно вызвать paramStr(0), но это вернёт зависящие от ОС данные (обычно имя запущенного исполняемого файла). Следует этого избегать и использовать getAppFilename() вместо этого.

Доступность: при генерации динамической библиотеки (см. --app:lib) в Posix эта процедура не определена. Проверьте доступность с помощью declared().

См. также:

  • модуль parseopt
  • процедура parseCmdLine
  • процедура paramCount
  • процедура commandLineParams
  • процедура getAppFilename

Примеры:

when declared(paramStr):
  # Use paramStr() here
else:
  # Do something else!
Source Edit
proc parseCmdLine(c: string): seq[string] {.noSideEffect, ...gcsafe,
    extern: "nos$1", raises: [], tags: [], forbids: [].}

Разделяет командную строку на несколько компонентов.

Примечание: эта процедура редко полезна, лучше использовать модуль parseopt.

В Windows она использует следующие правила разбора:

  • Аргументы разделяются пробелами (пробел или табуляция).
  • Символ «^» не распознаётся как символ экранирования или разделитель. Этот символ обрабатывается парсером командной строки операционной системы до передачи массиву argv программы.
  • Строка в двойных кавычках ("строка") интерпретируется как один аргумент, независимо от содержащихся в ней пробелов. Цитата может быть встроена в аргумент.
  • Двойная кавычка, предваряемая обратной косой чертой (\"), интерпретируется как буквальная двойная кавычка (").
  • Обратные косые черты интерпретируются буквально, за исключением случаев, когда они предшествуют двойной кавычке.
  • Если за двойной кавычкой следует чётное количество обратных косых черт, то в массив argv помещается по одной обратной косой черте за каждую пару, а двойная кавычка интерпретируется как разделитель строки.
  • Если за двойной кавычкой следует нечётное количество обратных косых черт, то в массив argv помещается по одной обратной косой черте за каждую пару, а оставшаяся обратная косая черта «экранирует» двойную кавычку, в результате чего двойная кавычка (") помещается в argv в качестве буквального символа.

В системах Posix она использует следующие правила разбора: компоненты разделяются пробелами, если они не находятся внутри " или ' кавычек.

См. также:

  • модуль parseopt
  • процедура paramCount
  • процедура paramStr
  • процедура commandLineParams
Source Edit

Шаблоны

template getCommandLine(): untyped
Source Edit

© 2006–2024 Andreas Rumpf
Licensed under the MIT License.
https://nim-lang.org/docs/cmdline.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API