Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.12.23;
Скачать: CL | DM;

Вниз

JpegObj и DLL   Найти похожие ветки 

 
Sapersky_   (2003-04-03 00:12) [0]

Пытаюсь сделать DLL-ку для загрузки jpeg"ов с помощью KOL. Не получается...

Var jpeg : PJpeg = nil;
implementation

function ReadJPEG(FileName : PChar; bmSize : PPoint) : HDC;
Var Ext : String;
w, h : Integer;
begin
Result:=0;
If FileExists(FileName) then begin
Ext:=ExtractFileExt(Filename);
If (Ext=".jpg") or (Ext=".jpeg") then begin
If jpeg=nil then jpeg:=NewJpeg;
jpeg.LoadFromFile(Filename);
bmSize.x:=jpeg.Width;
bmSize.y:=jpeg.Height;
( bmSize.x>0) Пытаюсь сделать DLL-ку для загрузки jpeg"ов с помощью KOL. Не получается...

Var jpeg : PJpeg = nil;
implementation

function ReadJPEG(FileName : PChar; bmSize : PPoint) : HDC;
Var Ext : String;
w, h : Integer;
begin
Result:=0;
If FileExists(FileName) then begin
Ext:=ExtractFileExt(Filename);
If (Ext=".jpg") or (Ext=".jpeg") then begin
If jpeg=nil then jpeg:=NewJpeg;
jpeg.LoadFromFile(Filename);
bmSize.x:=jpeg.Width;
bmSize.y:=jpeg.Height;
If (bmSize.x>0) and (bmSize.y>0) then Result:=jpeg.Bitmap.Canvas.Handle;
end;
end;
end;

procedure FreeJpeg;
begin
jpeg.Free;
end;

Используется, например, так:

jdll:=LoadLibrary("KOL_JPEG_LIB.dll");
ReadJPEG:=GetProcAddress(jdll,"ReadJPEG");
FreeJPEG:=GetProcAddress(jdll,"FreeJPEG");
DC:=ReadJpeg("noname.jpg",@bmSize);
If DC<>0 then BitBlt(WinDC,0,0,bmSize.x,bmSize.y,DC,0,0,SRCCOPY);
FreeJPEG;
FreeLibrary(jdll);

В тестовой программе с VCL глюкается сразу же (access violation на ReadJPEG), без VCL - на FreeJPEG.
Причём если использовать стандартные (VCL) TBitmap и TJpegImage (или KOL, но как юнит, а не как DLL) - всё работает.
Подозреваю, вопрос скорее по менеджменту памяти, чем по KOL, но тем не менее...


 
Кладов   (2003-04-07 21:45) [1]

А отлаживать не пробовали? Сделать останов в dll, и посмотреть, возвращает ли она что-нибудь?

Попробуйте указать полный путь к файлу. И зачем возвращать канву битмапа, когда проще вернуть хэндл битмапа.


 
Sapersky_   (2003-04-08 23:44) [2]

Спасибо за ответ, проблема уже решена. Вопрос оказался на внимательность - оказывается, при указании эспортного имени DLL регистр имеет значение... :)



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

Текущий архив: 2003.12.23;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.023 c
14-75392
smu
2003-11-28 08:29
2003.12.23
Надежно ли PGP шифрование?


7-75430
Terrible
2003-10-14 14:30
2003.12.23
Чтение секторов в Win2000/XP


1-75234
Clift
2003-12-10 19:32
2003.12.23
Paramstr()


14-75367
Kortez
2003-11-28 10:52
2003.12.23
Lola, с Днем Рождения! (наступающим)


14-75361
Thor
2003-11-28 22:31
2003.12.23
учебник по Sound Forge.