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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
stream
0 / 0 / 0
Регистрация: 19.11.2011
Сообщений: 26
#1

Открытие хранилища StgOpenStorage() и чтение данных из потока Read() - C++

19.11.2011, 20:56. Просмотров 567. Ответов 0
Метки нет (Все метки)

Возникла следующая проблема: при чтении потока stream всё нормально, если строки объявлены в виде статических массивов. А если они объявлены динамически, то работает не корректно. Помогите! Сам не знаю в чем причина. Вот кусок исходника
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
HRESULT hresStream;
LPSTREAM stream = NULL;
//Открытие iStream
hresStream = storage->OpenStream(L"Main MetaData Stream", NULL,STGM_READ|STGM_DIRECT|STGM_SHARE_EXCLUSIVE,0, &stream);
if (!FAILED(hresStream))
{
    cout << "ok open stream" << endl;
}
else cout << "error open stream" << endl;
//Читаем данный из потока
ULONG cb;
 
/*----------------------------Читаем иформацию о IStream-----------------------------------*/
        STATSTG StreamInfo;
        if(stream->Stat(&StreamInfo,STATFLAG_DEFAULT) == S_OK)
                         cout << "ok info read" << endl;
               else
                         cout << "error info read" << endl;
 
 
 
//StreamInfo.cbSize.QuadPart - размер читаемого потока в байтах
 
 
/*------------------------------------------------------------------------------------------*/
 
 
/*------------------Рабочая версия в статике-----------------------------------------------*/
OLECHAR buffer[18000];
hresStream = stream->Read(&buffer,StreamInfo.cbSize.QuadPart, &cb);
char buf[18000];
wcstombs((CHAR*)&buf,(OLECHAR*)&buffer,sizeof(buf));
/*------------------------------------------------------------------------------------------*/
 
/*-----Версия с динамически распределением памяти НЕрабочая---------------------------*/
    /*OLECHAR* buffer = new OLECHAR[StreamInfo.cbSize.QuadPart];
    hresStream = stream->Read(buffer,StreamInfo.cbSize.QuadPart, &cb);
    char* buf = new char[StreamInfo.cbSize.QuadPart];
    wcstombs((CHAR*)buf,(OLECHAR*)buffer,StreamInfo.cbSize.QuadPart);
/*------------------------------------------------------------------------------------------*/
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.11.2011, 20:56
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Открытие хранилища StgOpenStorage() и чтение данных из потока Read() (C++):

Чтение из файла read и rdbuf - C++
Всем доброго дня! Не могу понять почему при использовании функции read() появляются какие-то кракозябры, хотя при использовании...

Открытие потока. Ошибка. Подскажите. - C++
#include &lt;stdio.h&gt; #include &lt;iostream&gt; #include &lt;string.h&gt; using namespace std; struct STADION{string name;string vid;string...

Чтение строк из потока - C++
Доброго времени суток всем! Вопрос мой заключается в том, правильно ли я понял суть задания. Мне нужно создать класс, который сможет...

Чтение из потока буковок:) - C++
Задание: Дан файл, содержит текст, набранный заглавными русскими буквами. Провести частотный анализ текста, т.е указать (в процентах),...

Чтение из потока в вектор и в struct - C++
Читаю книгу Accelerated C++. Книга старая и использует позапрошлую версию С++. Автор приводит следующий пример: struct Student_info { ...

чтение строки как потока - C++
Если у меня в текстовом файле (ifstream &amp;fin) хранится какая-то последовательности n чисел, то я читаю её например так: for(int...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.11.2011, 20:56
Привет! Вот еще темы с ответами:

Чтение файла из входного потока - C++
есть код в нем есть путь к файлу, как мне сделать так чтоб я не писал путь к файлу а данные считывались при если допустим я запущу вот так...

Чтение числа из потока и обработка ошибок - C++
Есть поток. Из потока читается число. При чтении происходит сбой. Как узнать что конкретно сбойнуло (число слишком большое/это не число/в...

Cin, чтение с конца полученного потока - C++
Происходит ввод с клавиатуры последовательности чисел разделенных пробелами, нужно извлечь из этого потока последнее значение. Как?

Open/Save Dialog. Сериализация данных. Запись/чтение данных объектов в/из потока. - Delphi
Описана файловая переменная FileOfFilms: file of TFilmArr и переменная, содержащая имя файла FileName: string, на форме присутствуют...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

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