Показать сообщение отдельно
  #1  
Старый 23.06.2008, 17:56
inndim inndim вне форума
Прохожий
 
Регистрация: 08.06.2008
Сообщения: 5
Репутация: 10
По умолчанию проблема преобразование jpg в bmp через dll

Здравствуйте всем!
Пытаюсь написать dll которая будет конвертировать jpg в bmp, в delphi эта функция прекрасно работает, а вот экспортировать из dll не получается. Мне нужно чтобы из программы кликнув по кнопке, в dll передавался путь к файлу, а затем там этот jpg файл конвертировался в bmp и функция возвращала бы bitmap который я потом бы мог скопировать в Timage. Вот ниже привожу полностью код dll и самой программы, но увы почему-то не работает Помогите пожалуйста заставить всё это работать, я уже всю голову сломал. Да кстати SaveToClipboardFormat,LoadFromClipboardFormat мне не подходят.

Dот код dll
Код:
library jpgtobmp;

uses
  SysUtils,Classes,jpeg,Graphics;

{$R *.res}
function convertjpgtobmp(p:String; bmp:TBitmap): TBitmap; stdcall;
var
JPEG: TJPEGImage;
begin
    JPEG := TJPEGImage.Create;
    JPEG.LoadFromFile(p);
    Bmp.Assign(JPEG);
    result:=bmp;
    JPEG.Free;
end;
exports convertjpgtobmp;
begin
end.


А вот код моей програмки, из которой я пытаюсь вызвать фунуцию из dll
Код:
unit Convert;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, ExtCtrls;
   function convertjpgtobmp(p: string; bmp:TBitmap):TBitmap; stdcall;
type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    OpenDialog1: TOpenDialog;
    Image1: TImage;
    procedure Button2Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation
function convertjpgtobmp; external 'jpgtobmp.dll';

{$R *.DFM}

procedure TForm1.Button2Click(Sender: TObject);
begin
close;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
if opendialog1.Execute then
    convertjpgtobmp(opendialog1.FileName,image1.Picture.Bitmap);

end;


Заранее спасибо.
Ответить с цитированием