|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Май 27, 2003 20:16:06 Как получить параметры командной строки? Например если командная строка имеет вид: filename.exe param1 param2, то как получить эти param1, 2, 3... Заранее спасибо! |
|
|
Дата: Май 27, 2003 20:45:50 На каком языке Вы пишете ? |
|
|
Дата: Май 27, 2003 20:54:14 Вот неплохая библиотечка для разбора командной строки, неоднократно пользовался. http://home19.inet.tele.dk/jibz/files/clash20010622.zip |
|
|
Дата: Май 27, 2003 21:23:53 Только для архитектуры NT: CommandLineToArgvW(...) |
|
|
Дата: Май 28, 2003 05:46:57 Пишу на MASM32. Four-F Спасибо я попробую... |
|
|
Дата: Май 28, 2003 11:15:30 Попровал написать простейшую программу - не работает :( invoke MessageBox, NULL, CL_argv[2], ADDR szCaption, MB_OK В итоге при любой командной строке все равно появляется окно со значком "@" (без кавычек) вместо аргумента командной строки. В чем может быть дело? |
|
|
Дата: Май 28, 2003 11:59:54 А CL_ScanArgsX ты звал перед этих? Вобщем, я бы внимательно почитал что написано в clash.inc и разабрал пример. У меня все работало (какая там версия clash я уже не помню). А если баг какой, то лучше с автором побеседовать. command line and switch handling |
|
|
Дата: Май 28, 2003 16:45:05 Four-F "А CL_ScanArgsX ты звал перед этих?" Разумеется вызвал! Я еще пробовал написать: ADDR CL_argv[2] offset CL_argv[2] Все равно не работает :( |
|
|
Дата: Май 28, 2003 23:18:44 А... Дык CL_argv содержит указатели, а они DWORD, т.е CL_argv[0], CL_argv[4], CL_argv[8], и т.д. Т.е для тебя так. Должно работать. invoke MessageBox, NULL, CL_argv[4], ADDR szCaption, MB_OK Там, между прочим, в clash.inc прописано такое ; movzx eax,CL_switch['o'] ; get arg number of '-o' ; lea eax,[eax*4+4] ; calculate (eax+1)*4 ; mov eax,CL_argv[eax] ; get pointer to next arg |
|
|
Дата: Май 29, 2003 07:12:15 Four-F Т.е для тебя так. Должно работать. А не работает :( Там, между прочим, в clash.inc прописано такое Я это читал ;) |
|
|
Дата: Май 29, 2003 07:24:02 В общем еще раз суть проблемы: нужно определять параметры командной строки. Для этого скачал предложенную Four-F библиотеку для работы с командной строкой. Написал для пробы простейшую программу - она не работает :( invoke GetCommandLine mov CommandLine,eax invoke CL_ScanArgsX, CommandLine invoke MessageBox, NULL, CL_argv[2], ADDR szCaption, MB_OK При запуске программы независимо от командной строки вместо второго аргумента ком. строки появляется значок "@" (без кавычек). Пробовал так же написать: ADDR CL_argv[2] offset CL_argv[2] Результат такой же - опять эта собака (@). |
|
|
Дата: Май 29, 2003 07:52:33 Gloomy Почему CL_argv[2] ? На сколько я понял: ; invoke someFunction, CL_argv[4] ; ; to pass a pointer to the second command line argument (with ; argument number 1) to someFunction. CL_argv[0] - нулевой аргумент CL_argv[4] - первый аргумент CL_argv[8] - второй аргумент и т.д. |
|
|
Дата: Май 29, 2003 13:02:01 P2M Не важно какой я пытаюсь вызвать аргумент - все равно вылазит собака (@) :( |
|
|
Дата: Май 29, 2003 18:12:14 [ Gloomy: Не важно какой я пытаюсь вызвать аргумент - все равно вылазит собака (@) :( ] Ну очень странно, т.к. тут все настолько просто, что дальше некуда. Тот код, который ты привел должен работать 100%, если 2 на 4 поменять. Дальше разговаривать трудно, т.к. именно такой пример у меня работает. Вобщем подключай отладчик и разбирайся. Не разберешься, ну мыльни мне (four-f@mail.ru) - посмотрю. |
|
|
Дата: Май 30, 2003 04:02:01 Gloomy Не важно ... Вы шутите? Важно то, что Asm не Си/Pascal, и Ваш логический номер аргумента в физическое смещение в массиве двойных слов (clashdata.asm: CL_argv dd 256 dup (?)) переводить не будет. PS Если Вы беретесь писАть на Assembler'е, потрудитесь научиться разбираться хотя бы в простых исходниках (я имею ввиду предложенную Four-F библиотеку). |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.046 |