現在、システム開発は複数名以上の共同作業で行われることが多く、これにより迅速なシステム開発が可能となっています。
DLL 方式が最も便利です。私は、困っている学生を助けることを願って、この分野の情報をまとめました(私が最初に学習を始めたとき、アドバイスを求めることなど考えられなかったのを覚えています)。 //(ソースブックをコピー)
1. 関数プロシージャの書き方:
ライブラリFIRSTDLL;
用途
システムユーティリティ、
クラス;
{$R *.RES}
// 1. 関数の特定のプロセスと出力インターフェイス モードを定義します。
//--------------------------------
// 関数 1
// 関数: データの3倍増幅関数
//--------------------------------
関数 BBnToSSnn(SourceResult:Integer):Integer;stdCall;
始める
SourceResult>0 の場合
Result:=SourceResult+3 //結果はResultに格納されます
それ以外
結果:= ソース結果;
終わり;
輸出
BBnToSSnn; //2. 関数の出力ポートの定義
終わり。
==
==
2.DLLにフォームを作成
=======================
1. ワンステップで DLL プロジェクトを作成し、セットのフォームを追加します
ライブラリ MGRPERSN;
用途
システムユーティリティ、
授業、
MGRPERFM in 'MGRPERFM.pas' {FormPERSON};//1.フォーム コード (通常のフォームと同じ)
{$R *.RES}
輸出
ShowPerSN;//2. 関数の出力ポートの定義
始める
終わり。
2. DLLにセットしたフォームの設定
==========================================
ユニットMGRPERFM;
インタフェース
用途
ウィンドウ、メッセージ、SysUtils、クラス、グラフィックス、コントロール、フォーム、ダイアログ、
ComCtrls、ToolWin、ImgList;
タイプ
TFormPERSON = クラス(TForm)
プライベート
{プライベート宣言}
公共
{公的宣言}
終わり;
//これらの場所の変数は使用されなくなったので、次のように別の場所に変更します (1 つ変更)
//var
// フォームパーソン: TFormPERSON;
{アナウンスフォーム関数終了}//変更 2
関数 ShowPerSN(AHandle: THandle; ACaption: StdCall):BOOL;
実装
{$R *.DFM}
//関数データ処理定義
function ShowPerSN(AHandle: THandle; ACaption: String):BOOL;
変数
FormPERSON: TFormPERSON; //フォームクラスを定義します(上記はここに配置されます)
始める
// アプリケーション ハンドルを DLL の適切なプログラム オブジェクトにコピーします
application.Handle := AHandle;
FormPERSON := TFormPERSON.Create(Application);// コントロール TForm を作成します
試す
FormPERSON.Caption := ACaption;
FormPERSON.ShowModal;//このフォームを表示
結果 := False // 成功値を返します。
ついに
FormPERSON.無料;
終わり;
終わり;
3. DLL 内の関数とフォームの呼び出し
==========================
1. メソッド 1 を呼び出します
---------------
implementation // この下に関数を呼び出すDLLを記述します
{$R *.DFM}
//DLL内での関数呼び出し
関数 BBnToSSnn(SourceResult:Integer):Integer;
StdCall 外部 'FIRSTDLL.DLL';
……
2. メソッド 2 を呼び出します
==============
type //ここに関数クラスを作成します
// 1 ----------------------------------
TShowPerSN = 関数 (AHandle: THandle; ACaption: 文字列): StdCall;
EDLLLoadError = class(Exception); //エラーレコードクラスも同時に作成します
// 1 ----------------------------------
TMAINCLTR = class(TForm) //ここでは変更なし、システムが自動的に生成します
...
プロシージャ TMAINCLTR.ToolButton1Click(送信者: TObject);
var //ボタン呼び出しイベント: 呼び出しプロセス
LibHandle: THandle;
ShowPerSN: TShowPerSN;
始める
Application.Title:='人事管理システム DLL ファイル テスト プログラム';
{DLL のロードを試行します DLL ファイルのロードを試行します}
LibHandle := LoadLibrary('MGRPERSN.DLL');
試す
LibHandle = 0の場合
raise EDLLLoadError.Create('MGRPERSN.DLL を正常にロードできません');
@ShowPerSN := GetProcAddress(LibHandle, 'ShowPerSN');
そうでない場合 (@ShowPerSN = nil)、
ShowPerSN(Application.Handle, '人事情報管理')//フォームを呼び出す
それ以外
LastWin32Error を発生させます。
ついに
FreeLibrary(LibHandle); // DLL をアンロードします。
終わり;
終わり;
============== 終了 ==================
著者のブログ: http://blog.csdn.net/dgc/