Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #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;


Заранее спасибо.
Ответить с цитированием
  #2  
Старый 23.06.2008, 18:00
Аватар для The Shadow
The Shadow The Shadow вне форума
Продвинутый
 
Регистрация: 11.06.2007
Адрес: Уфа, Россия
Сообщения: 793
Репутация: 35
По умолчанию

Ну если параметр String то надо и в Dll и в проект в список uses добавить самым первым ShareMem. Или поменять тип на PChar
__________________
Что делать, когда сломался комп:
1. Если вы юзер - делать ноги.
2. Если ремонтник - делать деньги.
3. Если вы программист - делать вид, что так было задумано.
Ответить с цитированием
  #3  
Старый 24.06.2008, 12:30
inndim inndim вне форума
Прохожий
 
Регистрация: 08.06.2008
Сообщения: 5
Репутация: 10
По умолчанию

Поменял на Pchar, и результат тот же.
Ответить с цитированием
  #4  
Старый 24.06.2008, 14:35
k@Z@k k@Z@k вне форума
Новичок
 
Регистрация: 31.07.2007
Сообщения: 55
Репутация: 12
По умолчанию

1. Используй ShareMem в начале uses
2. Попробуй явно создавать,
и в библиотеке result:=TBitmap.Create;
result.free;
и в проге через переменную типа BTM:= TBitmap.Create;
image1.Picture.Bitmap:=BTM;
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 22:22.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025