Параметры командной строки

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Александр Андреев
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 145
Зарегистрирован: 09.04.2003 (Ср) 16:43
Откуда: Н.Новгород

Параметры командной строки

Сообщение Александр Андреев » 28.05.2003 (Ср) 11:40

Как в VB обработать параметры командной строки exe-шника?

FaKk2
El rebelde gurú
El rebelde gurú
Аватара пользователя
 
Сообщения: 2031
Зарегистрирован: 09.03.2003 (Вс) 22:10
Откуда: Los Angeles

Сообщение FaKk2 » 28.05.2003 (Ср) 12:06

Ищи на форуме.
100% уже было и не раз :wink:
Для получения ответа надо продемонстрировать качества, позволяющие стать компетентным — внимательность, вдумчивость, наблюдательность, желание активно участвовать в выработке решения.

Cyrax
Cyberninja
Cyberninja
Аватара пользователя
 
Сообщения: 891
Зарегистрирован: 25.04.2002 (Чт) 21:20
Откуда: Magnitogorsk, Russia

Сообщение Cyrax » 28.05.2003 (Ср) 12:08

из хелпа по VB5
В данном примере функция Command используется для передачи аргументов командной строки в функцию, которая возвращает их в переменной типа Variant, содержащей массив.

Код: Выделить всё
Function GetCommandLine(Optional MaxArgs)
   'Описание переменных.
   Dim C, CmdLine, CmdLnLen, InArg, I, NumArgs
   'Проверяет наличие MaxArgs.
   If IsMissing(MaxArgs) Then MaxArgs = 10
   'Задание правильной размерности массива.
   ReDim ArgArray(MaxArgs)
   NumArgs = 0: InArg = False
   'Получает аргументы командной строки.
   CmdLine = Command()
   CmdLnLen = Len(CmdLine)
   'Последовательный анализ всех символов
   'командной строки.
   For I = 1 To CmdLnLen

C = Mid(CmdLine, I, 1)
      'Проверка на наличие пробела или табуляции.
      If (C <> " " And C <> vbTab) Then
         'Символы пробела и табуляции не обнаружены.
         'Проверяет, является ли символ частью аргумента.
         If Not InArg Then
         'Начинается новый аргумент.
         'Проверка количества аргументов.
            If NumArgs = MaxArgs Then Exit For
               NumArgs = NumArgs + 1
               InArg = True
            End If
         'Добавление символа к текущему аргументу.

ArgArray(NumArgs) = ArgArray(NumArgs) + C
      Else
         'Найден символ пробела или табуляции.
         'Устанавливает для флага InArg значение False.
         InArg = False
      End If
   Next I
   'Изменение размера массива для хранения аргументов.
   ReDim Preserve ArgArray(NumArgs)
   'Возвращает массив в качестве имени функции.
   GetCommandLine = ArgArray()
End Function
Ты это ему расскажи. Я уже пять болтов отвинтил, и конца не видно... (озадаченно) А это в какую сторону тянуть? Ну-ка... Ага, этот был лишний, этот вообще не отсюда, и этот... Точно, два болта.

Welcome to IRC

Александр Андреев
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 145
Зарегистрирован: 09.04.2003 (Ср) 16:43
Откуда: Н.Новгород

Сообщение Александр Андреев » 28.05.2003 (Ср) 17:30

Вот эта строчка:

Код: Выделить всё
    CmdLine = Command()

ругается следующими словами: "Run-time error 450. Wrong number of arguments or invalid property assignment". :cry:

Cyrax
Cyberninja
Cyberninja
Аватара пользователя
 
Сообщения: 891
Зарегистрирован: 25.04.2002 (Чт) 21:20
Откуда: Magnitogorsk, Russia

Сообщение Cyrax » 28.05.2003 (Ср) 18:04

Александр Андреев писал(а):Вот эта строчка:

Код: Выделить всё
    CmdLine = Command()

ругается следующими словами: "Run-time error 450. Wrong number of arguments or invalid property assignment". :cry:


а ты скобки-то убери :wink: . они там вобще не нужни. вот только какой идиот (не я, это точно) их туда вставил.
а вообще эта функция звучит так Command$
Ты это ему расскажи. Я уже пять болтов отвинтил, и конца не видно... (озадаченно) А это в какую сторону тянуть? Ну-ка... Ага, этот был лишний, этот вообще не отсюда, и этот... Точно, два болта.

Welcome to IRC

Александр Андреев
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 145
Зарегистрирован: 09.04.2003 (Ср) 16:43
Откуда: Н.Новгород

Сообщение Александр Андреев » 28.05.2003 (Ср) 18:48

Тоже пробовал. Не работает (ругается уже по-другому).

Cyrax
Cyberninja
Cyberninja
Аватара пользователя
 
Сообщения: 891
Зарегистрирован: 25.04.2002 (Чт) 21:20
Откуда: Magnitogorsk, Russia

Сообщение Cyrax » 28.05.2003 (Ср) 19:04

Александр Андреев писал(а):Тоже пробовал. Не работает (ругается уже по-другому).

а ты откуда запускаешь программу-то?
из среды или exe-файл

:? хотя.... только что скопировал этот код, вставил в код формы
все работает прекрасно, без ошибок. :?
Последний раз редактировалось Cyrax 28.05.2003 (Ср) 19:17, всего редактировалось 2 раз(а).
Ты это ему расскажи. Я уже пять болтов отвинтил, и конца не видно... (озадаченно) А это в какую сторону тянуть? Ну-ка... Ага, этот был лишний, этот вообще не отсюда, и этот... Точно, два болта.

Welcome to IRC

skiperski
Идеолог
Идеолог
Аватара пользователя
 
Сообщения: 1386
Зарегистрирован: 25.06.2002 (Вт) 15:52

Сообщение skiperski » 28.05.2003 (Ср) 19:14

Наступи F2, потом в комбобоксе Search набери "command" и нажми Enter или кликни на бинокль. Должны найтись минимум:
Код: Выделить всё
VBA        Interaction               Command
VBA        Interaction               Command$
VBA        CommandButton

Если кроме них есть ещё чего-то, то в этом чего-то и есть твоя трабла. В этом случае вызывай в функцию с указанием библы: VBA.Command$

Твори, выдумывай, пробуй!

Александр Андреев
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 145
Зарегистрирован: 09.04.2003 (Ср) 16:43
Откуда: Н.Новгород

Сообщение Александр Андреев » 29.05.2003 (Чт) 10:54

skiperski сотворил верное решение... спасибо :)


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex-бот и гости: 72

    TopList