проблема с OpenStream
От: Brahmaputor  
Дата: 05.02.10 11:54
Оценка:
Пытаюсь сделать drag'n'drop вложений из почтового клинета,
и при попытке создания потока из IStorage дает AV на 775F5B6E accessing 00000010

Format.cfFormat := CF_FILEDESCRIPTOR;
Format.ptd := nil;
Format.dwAspect := 1;
Format.lindex := -1;
Format.tymed := TYMED_HGLOBAL;

if (dataObj.GetData(Format, Medium) = S_OK) then
begin
pfgd := PFileGroupDescriptor(GlobalLock(Medium.hGlobal));
for dwCount := 0 to pfgd.cItems — 1 do
begin
Format.cfFormat := CF_FILECONTENTS;
Format.ptd := nil;
Format.dwAspect := 1;
Format.lindex := dwCount;
Format.tymed := TYMED_ISTORAGE or TYMED_ISTREAM;
if (dataObj.GetData(Format, stgmitem) = S_OK) then
begin
pstg := IStorage(stgmitem.stg);
if pstg.OpenStream('__substg1.0_10090102', nil, STGM_READ or STGM_SHARE_EXCLUSIVE, 0, pstm) = S_OK then
...

Укажите, плиз, че не так у меня
drag drop openstream
Re: проблема с OpenStream
От: Jolly Roger  
Дата: 05.02.10 12:34
Оценка:
Здравствуйте, Brahmaputor, Вы писали:

B>Пытаюсь сделать drag'n'drop вложений из почтового клинета,

B>и при попытке создания потока из IStorage дает AV на 775F5B6E accessing 00000010

B> Format.cfFormat := CF_FILEDESCRIPTOR;

B> Format.ptd := nil;
B> Format.dwAspect := 1;
B> Format.lindex := -1;
B> Format.tymed := TYMED_HGLOBAL;

B> if (dataObj.GetData(Format, Medium) = S_OK) then

B> begin
B> pfgd := PFileGroupDescriptor(GlobalLock(Medium.hGlobal));
B> for dwCount := 0 to pfgd.cItems — 1 do
B> begin
B> Format.cfFormat := CF_FILECONTENTS;
B> Format.ptd := nil;
B> Format.dwAspect := 1;
B> Format.lindex := dwCount;
B> Format.tymed := TYMED_ISTORAGE or TYMED_ISTREAM;
B> if (dataObj.GetData(Format, stgmitem) = S_OK) then
B> begin
B> pstg := IStorage(stgmitem.stg);
B> if pstg.OpenStream('__substg1.0_10090102', nil, STGM_READ or STGM_SHARE_EXCLUSIVE, 0, pstm) = S_OK then
B> ...

B>Укажите, плиз, че не так у меня


Попробуйте так:

Format.tymed := TYMED_ISTORAGE;// or TYMED_ISTREAM;

Возможно наведёт на мысль.
"Нормальные герои всегда идут в обход!"
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.