簡易的Dll檔案製作--新手適用 |
|
juneo
高階會員 發表:103 回覆:190 積分:118 註冊:2004-05-13 發送簡訊給我 |
剛入門delphi 因為在這學到不少,所以把這幾天用delphi寫dll的心得寫出來分享一下,希望新手如果跟我一樣有這方面的需要,這份文件能夠幫上忙
不知道大家寫程式比較喜歡一各檔案重頭寫到尾,還是切割成很多檔案分開寫
廢話不多說了以下是dll檔的撰寫,也歡迎高手指教一下 這篇文章很簡單但是卻可以讓新手釐清DLL的運作模式 ---------------------------------------------------------------------
程式目的;製作DLL檔讓主程式呼叫後經過DLL處理再把函數回傳
總共檔案
1.Project1.dpr
2.Unit1.pas
3.inttohex.dpr ---------------------------------------------------------------------
dll檔案部分
1.Project1.dpr
{
程式名稱:project1
程式目的:產生DLL檔
產生日期:2004/0526
作者: jongwaye
} library Project1; { Important note about DLL memory management: ShareMem must be the
first unit in your library's USES clause AND your project's (select
Project-View Source) USES clause if your DLL exports any procedures or
functions that pass strings as parameters or function results. This
applies to all strings passed to and from your DLL--even those that
are nested in records and classes. ShareMem is the interface unit to
the BORLNDMM.DLL shared memory manager, which must be deployed along
with your DLL. To avoid using BORLNDMM.DLL, pass string information
using PChar or ShortString parameters. } uses
SysUtils,
Classes,
Unit1 in 'Unit1.pas'; {$R *.res}
exports intetohex; //設定要輸出的函數
begin
end.
---------------------------------------------------------------------
2.Unit1.pas
{
程式名稱:unit1.pas
程式目的:測試Dll傳入數值,改變後再傳回原來的程式
產生日期:2004/0526
作者: jongwaye
} unit Unit1; interface
uses Dialogs;
function intetohex(i,j:string):string;export; //設定函數 implementation function intetohex(i,j:string):string; //開始寫函數需要處理的事項 begin j := j '8'; //把J 上文字(string)8
Result := j; //把j傳回呼叫的檔案
showmessage('這是DLL改過的內容:' 'i=' i ',' 'j=' j); //顯示畫面表示DLL有作用 end; end. ---------------------------------------------------------------------
3.inttohex.dpr (主程式)
{
程式名稱:testinttohex
程式目的:呼叫 DLL
產生日期:2004/0526
作者: jongwaye
} unit testinttohex; interface uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type
TForm1 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Button1: TButton;
Button2: TButton;
Label1: TLabel;
Label2: TLabel;
procedure Button2Click(Sender: TObject);
procedure Button1Click(Sender: TObject); private
{ Private declarations }
public { Public declarations }
end; var Form1: TForm1;
function intetohex(i,j:string):string; far;external 'Project1.dll'; //設定要呼叫的函數名稱
implementation
{$R *.dfm} procedure TForm1.Button2Click(Sender: TObject);
begin
close; //離開按鈕
end; procedure TForm1.Button1Click(Sender: TObject);
var i,j,a : string; //設定變數 i,j a=取回Dll後的暫存變數
x ,y ,z :integer; //這些變數目的是做文字轉數字暫存
begin i := Edit1.Text;
j := Edit2.Text;
showmessage('i=' i ',' 'j=' j); //顯示輸入的文字 a := intetohex(i,j); //dll加工後將變數j傳回給a // showmessage('j=' j); //測試傳遞變數是否有成功用
// showmessage('a=' a);
x := strtoint(i); //把文字的資料轉成整數
y := strtoint(a);
z := x y; //計算兩變數的總計
showmessage('總計=' (inttostr(z))); //顯示總合,並且轉換為文字 在輸出 end; end. ---------------------------------------------------------------------
|
ha0009
版主 發表:16 回覆:507 積分:639 註冊:2002-03-16 發送簡訊給我 |
|
juneo
高階會員 發表:103 回覆:190 積分:118 註冊:2004-05-13 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |