Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.48 MB
Время: 0.019 c
3-6298
KPY
2003-03-17 08:28
2003.04.03
можно ли в TDBGrid выделить несколько ячеек


1-6582
denary
2003-03-14 01:30
2003.04.03
Undeclared identifier: CreateOleObject Уважаемые мастера, помог


14-6693
adogg
2003-03-15 12:45
2003.04.03
Генераторы случайных чисел


3-6388
s.ts
2003-03-13 17:49
2003.04.03
ODAC vs DOA


6-6650
Pankov
2003-02-13 10:03
2003.04.03
Компьютеры связаны COM порту