Форум: "WinAPI";
Текущий архив: 2003.06.05;
Скачать: [xml.tar.bz2];
ВнизПроблема с GlobalHandle. Найти похожие ветки
← →
Shirson (2003-04-07 09:01) [0]У меня есть стрим, который записывает данные в буфер. Затем, этот буфер я пытаюсь положить в клипбоард.
var
ms:TMemoryStream;
pBuff:pByte;
mh:THandle;
begin
...
ms.Read(pbuff,ms.size);
MH:=GlobalHandle(pBuff);
Clipboard.SetAsHandle(49161,MH);
Проблема в том, что на строкеMH:=GlobalHandle(pBuff);
Делфи вываливает дебагер. Ошибка - акцес виолэйшн.
Если буфер пустой, всё проходит тихо и спокойно (только на мне пустой буфер). Если в буфере хоть что-то есть, выскакивает дебагер.
В чём грабли?
← →
MBo (2003-04-07 09:21) [1]1) GlobalHandle IMHO не должна иметь дело с непонятным ей буфером от MemoryStream - см. GlobalLock, GlobalAlloc
2) выделена ли память под pBuff?
← →
Shirson (2003-04-08 06:55) [2]>MBo © (07.04.03 09:21)
>1) GlobalHandle IMHO не должна иметь дело с непонятным ей буфером от MemoryStream - см. GlobalLock, GlobalAlloc
А чего в нём непонятного?
Вот такая конструкция, более ломовой вариант, без посредников, прекрасно работает :)
mh:=globalhandle(MS.memory)
Собственно, а фигли нам, кабанам :)
← →
Cobalt (2003-04-08 11:19) [3]The GlobalHandle function retrieves the handle associated with the specified pointer to a global memory block.
HGLOBAL GlobalHandle(
LPCVOID pMem // pointer to the global memory block
);
Parameters
pMem
Points to the first byte of the global memory block. This pointer is returned by the GlobalLock function.
Вот, а в 6-ой Дельфи (по крайней мере) там память выделяется именно с помощью этой Alloc
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2003.06.05;
Скачать: [xml.tar.bz2];
Память: 0.44 MB
Время: 0.007 c