Текущий архив: 2003.04.03;
Скачать: 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 вся ветка
Текущий архив: 2003.04.03;
Скачать: CL | DM;
Память: 0.45 MB
Время: 0.009 c