Command
 
Возвращает параметры командной строки, используемые для вызова программы

Синтаксис

Declare Function Command ( ByVal index As Integer = -1 ) As String

Использование

result = Command[$]( [ index ] )

Параметры

index
Отсчитываемый от нуля индекс для конкретного аргумента командной строки.

Возвращаемое значение

Возвращает аргументы командной строки.

Описание

Command возвращает аргументы командной строки, передаваемые программе при запуске.

Если index меньше нуля (< 0), возвращается список всех аргументов командной строки; аргументы разделены пробелами. Если index больше нуля, один аргумент возвращается. Нулевое значение (0) возвращает имя исполняемого файла, а единица (1) и больше возвращает аргумент командной строки.

Если index больше, чем число аргументов, переданных программе, возвращается пустая строка ("").

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

По умолчанию, подстановка файловых имен для аргументов (расширение масок для имен файлов) используется на всех портах FreeBASIC для совместимости. Аргументы командной строки, содержащие подстановочные знаки обычно не расширяются при несоответствии файла или если в кавычках. Другие специальные символы для перенаправления обычно не возвращаются если должным образом находятся в кавычках. Обратитесь к документации оболочки для получения дополнительной информации о надлежащем использовании кавычек с аргументами командной строки.

ПРЕДУПРЕЖДЕНИЕ: По своей природе предшествования конструкторов в FreeBASIC и инициализации main(), вызов Command в пределах глобального конструктора не безопасно. В данный момент ваше приложение не потерпит крах, но вы только получите пустую строку (""). Это *может* быть изменится в будущем, но было бы мудро не полагаться на это.

Отключение подстановки файловых имен на Win32
Для сборок mingw32 и cygwin, слинкуйте программу FreeBASIC с CRT_noglob.o или определите следующее где-то в источнике:
Extern _CRT_glob Alias "_CRT_glob" As Integer
Dim Shared _CRT_glob As Integer = 0


Отключение подстановки файловых имен на Dos
Определить следующую функцию в источнике:
Public Function __crt0_glob_function Alias "__crt0_glob_function" ( ByVal arg As UByte Ptr ) As UByte Ptr Ptr
  Return 0
End Function


Отключение подстановки файловых имен на Linux
Подстановка файловых имен осуществляется в окне командной оболочки. Определите аргумент в кавычки, содержащий подстановочные знаки или отключите подстановку в оболочке до выполнения команды. Например, в bash используйте 'set -f' чтобы отключить расширение маски для имен файлов

Пример

Print "program launched via: " & Command(0)

Dim As Integer i = 1
Do
    Dim As String arg = Command(i)
    If Len(arg) = 0 Then
        Exit Do
    End If

    Print "command line argument " & i & " = """ & arg & """"
    i += 1
Loop

If i = 1 Then
    Print "(no command line arguments)"
End If

Sleep


Различия диалектов

  • Суффикс строкового типа $ является обязательным в диалекте -lang qb.
  • Суффикс строкового типа $ является необязательным в диалектах -lang fblite и -lang fb.

Отличия от QB

  • Числовой аргумент не поддерживался в QB.
  • QB преобразуется список параметров в верхний регистр, прежде чем вернуть, FreeBASIC нет.
  • По умолчанию аргументы, содержащие символы подстановки расширены (подстановка имен файлов)

См. также