CommandLineToArgvW() и CommandLineToArgvA()
От: Alter_ Украина http://alter.org.ua
Дата: 05.12.04 17:17
Оценка:
Меня давно удивляло, что функция для разбора командной строки и приведения ее к C-образному виду (argc/argv) присутствует в Win32 API только в Unicode варианте. Называется она CommandLineToArgvW().

Когда мне довелось писать программу, принимающую параметры из коммандной строки для Windows NT Native subsystem, пришлось написать...

На http://alter.org.ua/docs/win/args/
выложен код CommandLineToArgvW(). Для получения CommandLineToArgvA() достаточно заменить:

1. WCHAR -> CHAR
2. wcslen -> strlen
3. CommandLineToArgvW -> CommandLineToArgvA
--
Alter, http://alter.org.ua
Re: CommandLineToArgvW() и CommandLineToArgvA()
От: MShura  
Дата: 05.12.04 21:22
Оценка:
A_>Когда мне довелось писать программу, принимающую параметры из коммандной строки для Windows NT Native subsystem, пришлось написать...

А может имело смысл переписать программу, которая использует argc,argv?
И парсить целую строку?

Я так и делал когда-то...
Re[2]: CommandLineToArgvW() и CommandLineToArgvA()
От: Alter_ Украина http://alter.org.ua
Дата: 05.12.04 22:08
Оценка:
A_>>Когда мне довелось писать программу, принимающую параметры из коммандной строки для Windows NT Native subsystem, пришлось написать...

MS>А может имело смысл переписать программу, которая использует argc,argv?

MS>И парсить целую строку?

MS>Я так и делал когда-то...


В принципе, эту программулину я портировал из Win32, а она в свою очередь была портирована из Linux'a и использовала библиотеку getopt для разбора ключей. Оказалось проще CommandLineToArgvW() реализовать Да и после написания полноценного разборщика, который бы и кавычки правильно понимал, до разбиения на argc,argv пол шага остается.

Зато теперь легко писать тулзы, работающие в NT с Unicode filenames, а в 9x — с Ansi. Код один, а компилируется по-разному.
--
Alter, http://alter.org.ua
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.