Форум программистов, компьютерный форум CyberForum.ru

C++

Войти
Регистрация
Восстановить пароль
 
-=ЮрА=-
Заблокирован
Автор FAQ
#1

CString в OLECHAR - C++

13.04.2011, 10:30. Просмотров 981. Ответов 0
Метки нет (Все метки)

Столкнулся с проблеммой при добавлении в Storage файлов с русскими именами pStorage->CreateStream возвращает ошибку о том что имя элемента не правельное
В msdn-е написано что при создании потока его имя должно иметь тип OLECHAR подскажите как сконвертировать CString в OLECHAR???

Вот так получал OLECHAR в программе - для английских имён всё норм работает, сам тестил.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
LPWSTR CStorage::_L(LPCTSTR str)
{
    long uLen = MultiByteToWideChar(CP_ACP, 0, str,   -1,  NULL, NULL);
                MultiByteToWideChar(CP_ACP, 0, str, uLen, lpszW = 
                    (WCHAR *)realloc((void *)lpszW,sizeof(WCHAR)*uLen), 
                    uLen);
    return lpszW;
}
 
HRESULT CStorage::StgAddFile(LPCTSTR szName, IStorage * pStorage, IStream ** lpStream)
{
    hRes = pStorage->CreateStream
                (
                    _L(szName),
                    STGM_CREATE             | 
                    STGM_DIRECT             |
                    STGM_READWRITE          | 
                    STGM_SHARE_EXCLUSIVE/*  |
                    STGM_DELETEONRELEASE*/,
                    0, 0, lpStream
                );
    return hRes;
}
Добавлено через 19 часов 30 минут
Решение нашёл сам - всё дело в числе символов в имене файла!Все приведенные выше функции 100% работоспособны, если кому надо юзайте на здоровье...
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.04.2011, 10:30     CString в OLECHAR
Посмотрите здесь:

fgets и CString - C++
Здравствуйте, У меня возник вопрос, проконсультируйте, пожалуйста, что можно сделать в этой ситуации? Нужно прочитать строчку...

C++ <cstring> strlen() - C++
Народ, может ли функция strlen() обрабатывать тип не const char, а char ? компилятор ошибку выдаёт str.insert(Position_Begin(c),...

CString, MFC - Visual C++
Здавствуйте! Как из объекта CString из MFC выбрать подстроку? Например, от последнего пробела и до конца строки? и наоборот - от начала -...

класс CString - C++
расскажите пожалуйста, где найти информацию по этому классу?как его подключать, какие функции в нем есть? какую литературу прочесть чтобы в...

Сериализация CString - Boost C++
У меня есть структура Person: struct Person { //BOOST_SERIALIZATION_SPLIT_MEMBER(); public: Person::Person(const...

Преобразование CString в CEdit - C++
Помогите. Как мне преобразовать переменную CString в CEdit с условием, что нет элемента управления CEdit. Просто нужно строку CString...

Сравнение CString в map - Visual C++
Здравствуйте. Читаю файл в ucs-2 little endian кодировке с помощью CStdioFile построчно и разбиваю каждую строку на две. В мапе храню...

CString вывод строк - Visual C++
Здравствуйте!!! Проблема заключается в том что я не верно вывожу на экран информацию в программе. Работаю в среде Visual studio 2010 MFC ...

Преобразование TCHAT* to CString - C++ WinAPI
Необходимо реализовать преобразование массива из TCHAR* to CString. Как правильно сделать? Вот массив static TCHAR* szEcgLabelNames = {...

Преобразовать float в CString - Visual C++
Никак не могу решить проблему void CFunction2ArgDlg::OnBnClickedButton1() { CString S; CString T; CString K; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru