Вниз
Скачать: 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.013 c
14-6675
sapsi
2003-03-18 08:24
2003.04.03
Отношение к новым


3-6378
Ded Moroz
2003-03-14 17:42
2003.04.03
Объединение таблиц в БД


3-6345
dim111
2003-03-13 17:12
2003.04.03
Помогите с группировкой


7-6809
retlion
2003-02-07 16:36
2003.04.03
Как определить физическое положение файла на диске?


3-6293
Visp
2003-03-13 11:17
2003.04.03
Доступ к Индексам Clipper из делфи




   Наверх