Использование C-шной DLLDelphi , Файловая система , DLL и PlugInsИспользование C-шной DLLАвтор: Xavier Pacheco unit Main; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls; type TMainForm = class(TForm) Button1: TButton; Button2: TButton; FooData: TEdit; Button3: TButton; Button4: TButton; SetCVarData: TEdit; GetCVarData: TEdit; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Button4Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var MainForm: TMainForm; _GlobalVar: PChar = 'This is a Delphi String'; implementation uses PasStrng; {$R *.DFM} {$L ccode.obj} type TFoo = class function Function1(Str1: PChar): integer; virtual; cdecl; abstract; function Function2(i: integer): integer; virtual; cdecl; abstract; end; PCharArray = ^TCharArray; TCharArray = array[0..127] of char; // import from OBJ file: function _SAYHELLO(Text: PChar): Integer; cdecl; external; procedure _C_VAR; external; // trick to import OBJ data // imports from DLL file: function ClassFactory: TFoo; cdecl; external 'cdll.dll' name '_CLASSFACTORY'; procedure ClassKill(Foo: TFoo); cdecl; external 'cdll.dll' name '_CLASSKILL'; procedure TMainForm.Button1Click(Sender: TObject); begin _SayHello('hello world'); end; procedure TMainForm.Button2Click(Sender: TObject); var Foo: TFoo; begin Foo := ClassFactory; Foo.Function1('huh huh, cool.'); FooData.Text := IntToStr(Foo.Function2(10)); ClassKill(Foo); end; function GetCArray: string; var A: PCharArray; begin A := PCharArray(@_C_VAR); Result := A^; end; procedure SetCArray(const S: string); var A: PCharArray; begin A := PCharArray(@_C_VAR); StrLCopy(A^, PChar(S), SizeOf(TCharArray)); end; procedure TMainForm.Button3Click(Sender: TObject); begin SetCArray(SetCVarData.Text); end; procedure TMainForm.Button4Click(Sender: TObject); begin GetCVarData.Text := GetCArray; end; end.Скачать весь проект В этом проекте на языке Delphi используется DLL-библиотека с C-стилем для взаимодействия с приложением. В проекте есть несколько компонентов, включая формы, кнопки, текстовые поля и пользовательский класс Основная форма Основная форма имеет четыре кнопки: Button1, Button2, Button3 и Button4. Каждая кнопка выполняет разные действия:
Функции DLL Проект использует несколько функций из DLL:
Пользовательский класс
Пользовательский класс
Другие функции Проект включает несколько других функций и процедур, которые взаимодействуют с DLL:
В целом, этот проект демонстрирует, как взаимодействовать с C-стилем DLL из приложения на языке Delphi. В статье рассматривается пример использования C-шной DLL в Delphi, где описываются функции и процедуры для работы с динамически связанными библиотеками. Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта. :: Главная :: DLL и PlugIns ::
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |