Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.48 MB
Время: 0.027 c
3-1124186950
stud
2005-08-16 14:09
2005.09.25
упроавление вложенными курсорами MSSQL2000


1-1125400262
Vera
2005-08-30 15:11
2005.09.25
перейти на строку в текстовом файле.


1-1125627631
SergProger
2005-09-02 06:20
2005.09.25
Сообщения Windows


5-1100763658
Valerman
2004-11-18 10:40
2005.09.25
Перемаргивание компонентов при прорисовке ???


2-1124270369
ArtemESC
2005-08-17 13:19
2005.09.25
API