Текущий архив: 2005.09.25;
Скачать: CL | DM;
ВнизИспользование DLL Найти похожие ветки
← →
Ivanov (2005-08-13 08:09) [0]Мастера, подскажите пожалуйста: есть исполнимый файл содержащий
...
var
x, y, z: Integer
...
x := StrToInt(Edit1.Text);
y := StrToInt(Edit2.Text);
далее необходимо подключить библиотеку Summa.dll, содержащую функцию
z := x+y;
И, снова в исполнимом файле:
Edit4.Text := IntToStr(z);
...
Мастера, если не трудно набросайте код для библиотеки, и для "подключения" её к exe-файлу. Спасибо.
← →
TUser © (2005-08-13 08:13) [1]В хелпе к delphi (и в примерах) есть примеры dll.
← →
Tonich © (2005-08-13 12:15) [2]это код твоей 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 ну я думаю ты спаривишся с этим уже)
← →
Ivanov (2005-08-13 15:53) [3]Спасибо, Tonich. То, что надо.
Правда, возникла новая проблема - решил добавить в проект Image, тоже через dll:
в бибилиотеке:
procedure Bmp(Bitmap;TBitmap);stdcall;
begin
Image1.Picture.LoadFromFile("1.bmp");
end;
exports
Bmp;
а в исполнимом файле после LoadLibrary (Image1 уже создан):
Bmp(?????)//Не могу понять что необходимо поставить в скобках.
Мастера, подскажите. А, может быть, есть более удобный способ вставить в проект рисунок из библиотеки?
← →
Юрий Зотов © (2005-08-13 16:36) [4]Если рисунок все равно грузится из файла, то при чем тут DLL? Прямо в проекте его и грузите, той же самой строчкой.
← →
TUser © (2005-08-13 17:48) [5]> Ivanov (13.08.05 15:53) [3]
В Dll ничего не известно про Image1. Надо
procedure Bmp(Image: TImage);
begin
Image.Picture.LoadFromFile()
end;
В проекте Bmp (Image1).
← →
Ivanov (2005-08-13 23:01) [6]Библиотека почему-то отказывается признавать TImage. Если не трудно напишите пожалуйста полный код для Dll.
← →
Yegorchic © (2005-08-14 00:15) [7]В DLL в uses пропишите ExtCtrls. Должно вроде заработать.
← →
Ivanov (2005-08-15 21:32) [8]Спасибо Yegorchic, бибилиотека откомпилировалась.
Правда возникла новая проблема - при нажатиии на кнопку по которой программа обращается к библиотеке процесс останавливается и появляется сообщение:
"Project Project6.exe raised exception class EAccess Violation with message "Access violation at address 011F6A27 in module "3.DLL". Read of address FFFFFFFF"."
Где искать причину неполадки я не понимаю. Мастера, подскажите кто может.
Страницы: 1 вся ветка
Текущий архив: 2005.09.25;
Скачать: CL | DM;
Память: 0.46 MB
Время: 0.046 c