Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> проблема преобразование jpg в bmp через dll, преобразование jpg в bmp через dll 
:(
    Опции темы
inndim
Дата 23.6.2008, 17:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 8.6.2008
Где: Королёв

Репутация: нет
Всего: 1



Здравствуйте всем!
Пытаюсь написать 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;
 

Заранее спасибо.


PM MAIL WWW   Вверх
MetalFan
Дата 23.6.2008, 18:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 62
Всего: 128



читай доки. не рекомендуется в/из библиотеки передавать объекты.

Это сообщение отредактировал(а) MetalFan - 23.6.2008, 18:23


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
Alexeis
Дата 25.6.2008, 09:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 109
Всего: 459





--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Чучмек
Дата 25.6.2008, 14:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЭТ БИЛЭТ
**


Профиль
Группа: Участник
Сообщений: 841
Регистрация: 11.5.2008
Где: СССР

Репутация: 14
Всего: 41



Попробуй в dll в место stdcall; написать deprecated;
Тоесть 
function convertjpgtobmp(p:String; bmp:TBitmap): TBitmap; deprecated;

Создай jpgtobmpdll.pas
Код

unit jpgtobmpdll;

interface
function convertjpgtobmp(p:String; bmp:TBitmap): TBitmap;external
'pgtobmp.dll';
implementation
end.




В программе в  uses добавь jpgtobmpdll
а строки function convertjpgtobmp(p: string; bmp:TBitmap):TBitmap; stdcall;
и function convertjpgtobmp; external 'jpgtobmp.dll'; убери
получится типа:


Код

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, ExtCtrls,jpgtobmpdll;
  
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


{$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; 



M
Alexeis
Модератор: используйте подсветку кода


А куда твоя convertjpgtobmp передает значение?

Если твои функции в dll передают значения с помощью хитрых типов используй указатель.
 

 




--------------------
умную мысль держи при себе, а дурной - поделись с другими 
PM MAIL   Вверх
MetalFan
Дата 25.6.2008, 15:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 62
Всего: 128



Чучмек, что за бред...  smile 


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1863 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.