Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Использование DLL


Ivanov ©   (2005-08-13 08:09:00) 

Мастера, подскажите пожалуйста: есть исполнимый файл содержащий
...
var
x, y, z: Integer
...
x := StrToInt(Edit1.Text);
y := StrToInt(Edit2.Text);
далее необходимо подключить библиотеку Summa.dll, содержащую функцию
z := x+y;
И, снова в исполнимом файле:
Edit4.Text := IntToStr(z);
...
Мастера, если не трудно набросайте код для библиотеки, и для "подключения" её к exe-файлу. Спасибо.


Ivanov   (2005-08-15 21:32:00) [1]

Спасибо Yegorchic, бибилиотека откомпилировалась.
Правда возникла новая проблема - при нажатиии на кнопку по которой программа обращается к библиотеке процесс останавливается и появляется сообщение:
"Project Project6.exe raised exception class EAccess Violation with message 'Access violation at address 011F6A27 in module '3.DLL'. Read of address FFFFFFFF'."
Где искать причину неполадки я не понимаю. Мастера, подскажите кто может.


Yegorchic   (2005-08-14 00:15:00) [2]

В DLL в uses пропишите ExtCtrls. Должно вроде заработать.


Ivanov   (2005-08-13 23:01:00) [3]

Библиотека почему-то отказывается признавать TImage. Если не трудно напишите пожалуйста полный код для Dll.


TUser   (2005-08-13 17:48:00) [4]

> Ivanov   (13.08.05 15:53) [3]

В Dll ничего не известно про Image1. Надо
procedure Bmp(Image: TImage);
begin
 Image.Picture.LoadFromFile()
end;

В проекте Bmp (Image1).


Юрий Зотов   (2005-08-13 16:36:00) [5]

Если рисунок все равно грузится из файла, то при чем тут DLL? Прямо в проекте его и грузите, той же самой строчкой.


Ivanov   (2005-08-13 15:53:00) [6]

Спасибо, Tonich. То, что надо.
Правда, возникла новая проблема - решил добавить в проект Image, тоже через dll:
в бибилиотеке:

procedure Bmp(Bitmap;TBitmap);stdcall;
begin
Image1.Picture.LoadFromFile('1.bmp');
end;

exports
Bmp;

а в исполнимом файле после LoadLibrary (Image1 уже создан):

Bmp(?????)//Не могу понять что необходимо поставить в скобках.

Мастера, подскажите. А, может быть, есть более удобный способ вставить в проект рисунок из библиотеки?


Tonich   (2005-08-13 12:15:00) [7]

это код твоей Dll


library DLLProject;

uses
 SysUtils,
 Classes;
{$R *.res}
function  ZFunction(x,y:extended):extended;stdcall;
begin
 Result := x+y;
end;

exports
ZFunction;
begin
end.


а это код хоста (твоего приложения)


unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls;

type
 TForm1 = class(TForm)
   Button1: TButton;
   procedure Button1Click(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;
 Function ZFunction(x,y:extended):extended;stdcall;    external 'DllProject.dll';
implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
Edit4.Text := FloatToStr(ZFunction(1,1));
end;

end.


это статический способ загрузки Dll

ой только я сейчас заметил у тебя там integer а я объявил  extended ну я думаю ты спаривишся с этим уже)


TUser   (2005-08-13 08:13:00) [8]

В хелпе к delphi (и в примерах) есть примеры dll.


Наверх

Титульная страница Поиск, карта сайта Написать письмо