Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.03.2012, 12:15   #1
ds.Dante
Старожил
 
Аватар для ds.Dante
 
Регистрация: 06.08.2009
Сообщений: 2,992
По умолчанию WinAPI vs MSDN (парсинг командной строки)

В MSDN есть несколько примеров, как надо парсить командную строку. А функция CommandLineToArgv на половине примеров заваливается. :)
Код:
Пример 3:
a\\\"b c d

MSDN:
a\"b
c
d

CommandLineToArgv:
a\\\"b
c
d



Пример 4:
a\\\\"b c" d e

MSDN:
a\\b c
d
e

CommandLineToArgv:
a\\\\"b
c d e
ds.Dante вне форума Ответить с цитированием
Старый 01.03.2012, 13:29   #2
microbit
Форумчанин
 
Аватар для microbit
 
Регистрация: 26.09.2011
Сообщений: 176
По умолчанию

правильно она парсит, как заявлено.
microbit вне форума Ответить с цитированием
Старый 01.03.2012, 15:37   #3
haruhi
Форумчанин
 
Аватар для haruhi
 
Регистрация: 05.10.2011
Сообщений: 368
По умолчанию

Код:
Пример 3:
a\\\"b c d

MSDN:
a\"b
c
d

CommandLineToArgv:
a\\\"b
c
d
правильно же
Не стоит будить спящего Бога! (с) Меланхолия Харухи Судзумии
haruhi вне форума Ответить с цитированием
Старый 01.03.2012, 17:13   #4
ds.Dante
Старожил
 
Аватар для ds.Dante
 
Регистрация: 06.08.2009
Сообщений: 2,992
По умолчанию

Цитата:
Сообщение от haruhi Посмотреть сообщение
Код:
Пример 3:
a\\\"b c d

MSDN:
a\"b
c
d

CommandLineToArgv:
a\\\"b
c
d
правильно же
Нет, все строки уже приведены к одинаковому виду, без эскейпов. То есть CommandLineToArgv возвращает "a\\\\\\\"b" если с эскейпами.

Последний раз редактировалось ds.Dante; 01.03.2012 в 17:18.
ds.Dante вне форума Ответить с цитированием
Старый 02.03.2012, 21:03   #5
rpy3uH
добрый няша
Старожил
 
Аватар для rpy3uH
 
Регистрация: 29.10.2006
Сообщений: 4,804
По умолчанию

а может надо функции CommandLineToArgv передавать строку без эскейпов?

http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx
Цитата:
CommandLineToArgvW has a special interpretation of backslash characters when they are followed by a quotation mark character ("), as follows:
2n backslashes followed by a quotation mark produce n backslashes followed by a quotation mark.
(2n) + 1 backslashes followed by a quotation mark again produce n backslashes followed by a quotation mark.
n backslashes not followed by a quotation mark simply produce n backslashes.

алсо, код покажи

Последний раз редактировалось rpy3uH; 02.03.2012 в 21:06.
rpy3uH вне форума Ответить с цитированием
Старый 03.03.2012, 08:41   #6
ds.Dante
Старожил
 
Аватар для ds.Dante
 
Регистрация: 06.08.2009
Сообщений: 2,992
По умолчанию

Я передавал строку именно как в примере, т. е. эскейпы только для компилятора, но не для функции.

Код на работе, смогу показать только в понедельник. Функцию вызываю из шарпа через [DllImport].
ds.Dante вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ляпы в MSDN Kostia Свободное общение 4 16.01.2012 20:48
MSDN по русски aska2013 Свободное общение 15 27.02.2010 22:27
Библиотека MSDN Rembo Помощь студентам 9 30.11.2008 20:33
Выложите MSDN library KJIOyH Общие вопросы C/C++ 3 20.10.2007 11:21