файлик msdasc.h, строка 241:
/* [in] */ LPCOLESTR pwszszzProviderFilter,
21.02.03 21:59: Перенесено модератором из 'Коллеги, улыбнитесь' в Философию программирования — ХД
Здравствуйте, NetRaider, Вы писали:
NR>файлик msdasc.h, строка 241:
NR> /* [in] */ LPCOLESTR pwszszzProviderFilter, :))
Зато исчерпывающе ясно: две строки с нулями на конце и финальным нулем. Достаточно распространенная форма для мультистринга (частный случай из 2 строк).
Единственно, что непонятно: как такую хрень маршалировать?
Здравствуйте, Кодт, Вы писали:
К>Здравствуйте, NetRaider, Вы писали:
К>Зато исчерпывающе ясно: две строки с нулями на конце и финальным нулем. Достаточно распространенная форма для мультистринга (частный случай из 2 строк).
К>Единственно, что непонятно: как такую хрень маршалировать?
А если больше строк с "нулями на конце". Как такую хрень читать?
Один из самых обычных и ведущих к самым большим бедствиям соблазнов есть соблазн словами: "Все так делают".
Лев Толстой
Здравствуйте, IvEv, Вы писали:
К>>Зато исчерпывающе ясно: две строки с нулями на конце и финальным нулем. Достаточно распространенная форма для мультистринга (частный случай из 2 строк).
К>>Единственно, что непонятно: как такую хрень маршалировать?
IE>А если больше строк с "нулями на конце". Как такую хрень читать?
В данном случае — количество строк жестко прибито требованиями того API, где это написано.
Я могу привести пример, где это так: фильтры файлов в диалоге Open/Save. Там это выглядит как
"файлы ворда (*.doc и проч.)\0*.doc,*.rtf,*.txt\0"
Как такую хрень читать:
const char* read_multistring(const char* str, const char** next)
{
int len = strlen(str);
if(len > 0) ++len;
if(next) *next = str + len;
return str;
}
bool is_multistring_end(const char* str)
{
return *str == 0; // конец - это строка нулевой длины
}
int multistring_length(const char* str)
{
int len = 0;
while(true)
if (str[len+1]) len += 2;
else if(str[len] ) len += 1;
else return len;
}
Как такую хрень писать:
const char* add_str_to_multistring(char* dst, const char* src)
// возвращает указатель на конец мультистринга
{
strcpy(dst, src);
dst += strlen(dst) + 1; // за конец строки
*dst = 0; // закрываем мультистринг
return dst;
}
CString (и, вроде бы, std::string) поддерживают мультистринги.
Здравствуйте, Кодт, Вы писали:
К>Здравствуйте, IvEv, Вы писали:
IE>>А если больше строк с "нулями на конце". Как такую хрень читать?
К>В данном случае — количество строк жестко прибито требованиями того API, где это написано.
К>Я могу привести пример, где это так: фильтры файлов в диалоге Open/Save. Там это выглядит как
К>"файлы ворда (*.doc и проч.)\0*.doc,*.rtf,*.txt\0"
К>Как такую хрень читать:
К>[c]
К> ...
К>...
К>Как такую хрень писать:
К>...
К>CString (и, вроде бы, std::string) поддерживают мультистринги.
Под словом "читать" я имел ввиду произносить название такой переменной.
А за примеры спасибо, может быть когда-нибудь пригодятся...
Один из самых обычных и ведущих к самым большим бедствиям соблазнов есть соблазн словами: "Все так делают".
Лев Толстой
Здравствуйте, NetRaider, Вы писали:
NR>файлик msdasc.h, строка 241:
NR> /* [in] */ LPCOLESTR pwszszzProviderFilter,
Каждый сам вправе выбирать, какую нотацию ему использовать.
вот MicroSoft выбрали именно такую.... чтоб всех переплюнуть, видимо
NR> /* [in] */ LPCOLESTR pwszszzProviderFilter,
венгерскую нотацию надо душить на корню