Главная страница
    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.45 MB
Время: 0.01 c
6-6641
Jel
2003-02-10 11:24
2003.04.03
Нужно создать виртуальную сетевую карту.


4-6857
Alexander
2003-02-03 08:12
2003.04.03
Что-то я не могу победить следующий код: на С выглядит так


3-6404
id
2003-03-16 00:03
2003.04.03
Суммирование значений таблицы


1-6601
pet
2003-03-22 20:15
2003.04.03
проблема с созданием


4-6874
}{enon
2003-02-02 09:07
2003.04.03
Как узнать тип компонента-наследника TWinControl?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский