![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Использование 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.