Карта сайтаСсылкиКонтакты

Хостинг


Написание DLL в Delphi

PDF Печать
Статьи

Самое простое - писать функции и процедуры DLL с передачей целых чисел или с плавающей точкой. Тестовый проект Delphi демонстрирует требуемые объявления в Delphi и Visual Basic:


program Rg;
  uses
    Forms,
    Rg1 in 'RG1.PAS' {Form1},
    Rg2 in 'RG2.PAS';{$R*.RES}
  begin
  Application.CreateForm(TForm1, Form1);
    Application.Run;
  end.

Модуль, который содержит код DLL показан ниже. Обратите внимание на объявление в разделе interface и использование директивы export после объявления. Директива export делает процедуру или фукнцию экспортной в пределах DLL, вынуждая подпрограмму использовать модель дальнего вызова и генерируя специальный вход в процедуру и код завершения.


unit Rg2;
  interface
  procedure ChangeInt(x1 : integer; var x2 : integer); export;    
                                        {Note export directive}
  procedure ChangeSingle(x1 : single; var x2 : single); export;   
                                        {Note export directive}
  implementation
  procedure ChangeInt(x1 : integer; var x2 : integer);
  begin
      x2 := x1 * 20;
  end;
  procedure ChangeSingle(x1 : single;  var x2 : single);
  begin
      x2 := x1 * 20.56;
  end;
  end.

Это код тестовой формы, которая содержит две кнопки:


 procedure TForm1.Button1Click (Sender: TObject);
  var
      x1,x2:integer;
  begin
  x1:=4;
  ChangeInt(x1,x2);
  showmessage(inttostr(x2));
  end;
  procedure TForm1.Button2Click (Sender: TObject);
  var
      x1,x2:single;
      s:string ;
  begin
  x1:=4.6;
  Changesingle(x1,x2);
  str(x2:0:3,s);
  showmessage(s);
  end;
  end.

чтобы проверить приложение, скомпилируйте и запустите проект обычным способом. Для создания проекта DLL, используйте rgdll.dpr, показанный выше и скомпилируйте проект. Вы не можете запустить проект DLL.

Теперь давайте создадим проект в VB. Нужно создать форму с двумя кнопками и файлом модуля. В модуле поместите следующие объявление:


Declare Sub changesingle Lib "rgdll.dll" (
        ByVal x1 As Single, x2 As Single)
Declare Sub changeint Lib "rgdll.dll" (
        ByVal x1 As Integer, x2 As Integer)

Нужно отметить следующее:

  1. Каталог, в котором расположена DLL должен быть в стандартной папке, обычно Windows/System
  2. Типы параметров, которые передают DLL, должны соответствовать
  3. Используйте ByVal для передачи значений

В коде формы поместите следующее:


Sub Command1_Click ()
      Dim x1 As Integer
      Dim x2 As Integer
      x1 = 4
      Call changeint(x1, x2)
      Print x2
  End Sub
  Sub Command2_Click ()
      Dim x1 As Single
      Dim x2 As Single
      x1 = 4.6
      Call changesingle(x1,x2)
      Print x2
  End Sub

Если все работает, значит Вы создали свою первую DLL!


 

Добавить комментарий


Защитный код
Обновить