Главная страница
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.015 c
3-75125
Frag
2003-11-28 11:59
2003.12.23
Обработка огромного файла Excel


14-75362
SkyRanger
2003-12-02 02:41
2003.12.23
Халява в сети...


8-75268
help
2003-08-25 12:40
2003.12.23
Изменение экранного разрешения


3-75108
pashaz
2003-11-26 23:45
2003.12.23
Запись в базу...


14-75349
Vorobyev Sergey
2003-11-27 15:47
2003.12.23
Меняется тональность и громкость шума из-за процессора (!!!)