Вниз
Скачать: CL | DM;

Что-то я не могу победить следующий код: на С выглядит так   Найти похожие ветки 

 
Alexander ©   (2003-02-03 08:12) [0]


byte * bits = (byte *) malloc(rec.nSize);
if ( bits == NULL )
return FALSE;
...
HENHMETAFILE hEmf = SetEnhMetaFileBits(rec.nSize, bits);


у меня выглядит так:

var
bits: PByte;
hEmf: Cardinal;

bits := SysGetMem(rec.nSize);
...
hEmf := SetEnhMetaFileBits(rec.nSize, PChar(bits));


но при выполнении SetEnhMetaFileBits выскакивает:"Неверная попытка доступа к адресу памяти" (GetLastError)

В чём может быть дело?


 
MBo ©   (2003-02-03 08:37) [1]

Для какой цели? Загрузку из ресурса можно делать так:

procedure TForm1.Button1Click(Sender: TObject);
var
bits: PByte;
hEmf: Cardinal;
hRes,hData:THandle;
begin
hRes:=FindResource(hInstance,WideString("EMFFILE"),"RT_RCDATA");
hData:=LoadResource(hInstance,hRes);
bits:=LockResource(hData);
hEmf := SetEnhMetaFileBits(SizeOfResource(hInstance,hRes), PChar(bits));
PlayEnhMetaFile(Canvas.Handle,hEmf, Rect(0,0,100,100));
end;


 
Alexander ©   (2003-02-03 09:01) [2]

Мне нужно прочитать из постороннего файла по заданному адресу, заданное число байт. И вот эти данные засунуть в hEmf.
Читаю данные так:

hFile := CreateFile(PChar(Edit1.Text), GENERIC_READ, 0, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
SetFilePointer(hFile, 140, nil, FILE_BEGIN);
ReadFile(hFile, bits, 106852, BytesRead, nil);

правда блок великоват и не всегда BytesRead=106852.


 
MBo ©   (2003-02-03 09:55) [3]

неправильно читал. раскомментируй 140

hFile := CreateFile("e:\5.emf", GENERIC_READ, 0, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
ToRead:=Min(106852,GetFileSize(hfile,nil) {-140});
GetMem(bits,ToRead);
SetFilePointer(hFile, {140}0, nil, FILE_BEGIN);
ReadFile(hFile, bits^, ToRead, BytesRead, nil);
hEmf := SetEnhMetaFileBits(ToRead, PChar(bits));
PlayEnhMetaFile(Canvas.Handle,hEmf, Rect(0,0,100,100));
DeleteEnhMetaFile(hEmf);


 
Alexander ©   (2003-02-03 11:40) [4]

Спасибо, с галочкой (bits^) заработало.

как мне теперь эти emf данные записать в обычный emf файл?


 
MBo ©   (2003-02-03 12:28) [5]

CopyEnhMetaFile



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.023 c
3-6312
PONTIY
2003-03-17 11:05
2003.04.03
Как в шапке TRxDBGrid ставить признаки направления сортировки?


7-6818
FilSM
2003-02-10 19:10
2003.04.03
Икона приложения под 98-ой пропадает


4-6871
Cosmic
2003-02-06 18:59
2003.04.03
Текущий каталог


9-6290
GSV-Master
2002-05-05 02:03
2003.04.03
Помогите выбрать, на чем писать игру DelphiX или DirectX API


8-6617
vladnt
2002-12-24 15:16
2003.04.03
Сплайн-интерполяция




   Наверх