DLL 파일의 Delphi 생성 및 호출
, , , 。
DLL 。 , 。
. :
library FIRSTDLL;
uses
SysUtils,
Classes;
{$R *.RES}
// 1.
// --------------------------------
// 1
// : 3
// --------------------------------
function PenniesToSoins(SourceResult:Integer):Integer;stdCall;
begin
if SourceResult>0 then
Result:=SourceResult*3 // Result
else
Result:=SourceResult;
end;
exports
PenniesToSoins; //2.
end.
==
==
. DLL Form
=======================
1. , DLL , Form
library MGRPERSN;
uses
SysUtils,
Classes,
MGRPERFM in 'MGRPERFM.pas' {FormPERSON};//1.Form ( Form )
{$R *.RES}
exports
ShowPerSN;//2.
begin
end.
2. DLL Form
===========================================
unit MGRPERFM;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ComCtrls, ToolWin, ImgList;
type
TFormPERSON = class(TForm)
private
{ Private declarations }
public
{ Public declarations }
end;
// , , ( )
//var
// FormPERSON: TFormPERSON;
{ Declare the export function Form }//
function ShowPerSN(AHandle: THandle; ACaption: String):BOOL; StdCall;
implementation
{$R *.DFM}
//
function ShowPerSN(AHandle: THandle; ACaption: String):BOOL;
var
FormPERSON: TFormPERSON; // ( )
begin
// Copy application handle to DLL's TApplication object
// DLL
Application.Handle := AHandle;
FormPERSON := TFormPERSON.Create(Application);// TForm
try
FormPERSON.Caption := ACaption;
FormPERSON.ShowModal;// Form
// Pass the date back in Result
Result := False; //
finally
FormPERSON.Free;
end;
end;
.DLL
==========================
1.
--------------
implementation // DLL
{$R *.DFM}
//DLL
function PenniesToSoins(SourceResult:Integer):Integer;
StdCall external 'FIRSTDLL.DLL';
........
2.
==============
type //
// 1 -------------------------------
{ First, define a procedural data type, this should reflect the
procedure that is exported from the DLL. }
{ Create a new exception class to reflect a failed DLL load }
TShowPerSN = function (AHandle: THandle; ACaption: String): BOOL; StdCall;
EDLLLoadError = class(Exception);//
// 1 -------------------------------
TMAINCLTR = class(TForm) // ,
......
procedure TMAINCLTR.ToolButton1Click(Sender: TObject);
var // :
LibHandle: THandle;
ShowPerSN: TShowPerSN;
begin
Application.Title:=' DLL ';
{ Attempt to load the DLL DLL }
LibHandle := LoadLibrary('MGRPERSN.DLL');
try
if LibHandle = 0 then
raise EDLLLoadError.Create('Unable to Load DLL( MGRPERSN.DLL)');
@ShowPerSN := GetProcAddress(LibHandle, 'ShowPerSN');
if not (@ShowPerSN = nil) then
ShowPerSN(Application.Handle, ' ')//
else
RaiseLastWin32Error;
finally
FreeLibrary(LibHandle); // Unload the DLL.
end;
end;
============== END ==================
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
제한된 크기의 디렉토리를 만드는 방법오늘 저는 장치에 공간이 없을 때 백업 중에 응용 프로그램이 어떻게 작동하는지 테스트(및 수정)하는 작업이 있습니다. 결과적으로 "남은 공간 없음"오류로 백업이 실패하면 새 파일이 없어야 합니다. 지금까지 문제를 재...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.