如何將常用的function放在一個Pas,使用時 myFunction.xxx、myFunction.bbb ? |
答題得分者是:Coffee
|
rookie_me
一般會員 發表:4 回覆:3 積分:1 註冊:2007-05-25 發送簡訊給我 |
<textarea class="delphi" rows="10" cols="60" name="code">
unit myFunctio; interface uses
…; type
myFunctioUtils =class(????)
private
{ Private declarations }
public
{ Public declarations }
procedure aaaa;
end; implementation procedure myFunctioUtils.aaaa;
var </textarea>
-----------------------
要如何才能在使用時,使用
myFunctioUtils.aaaa; 而不需再 create myFunctioUtils ??
|
Jasonwong
版主 發表:49 回覆:931 積分:581 註冊:2006-10-27 發送簡訊給我 |
|
Coffee
版主 發表:31 回覆:878 積分:561 註冊:2006-11-15 發送簡訊給我 |
這是我的方法,這樣連是哪個物件都不需要知道
可以參考看看 <textarea cols="60" rows="10" class="delphi" name="code">
unit mutils; interface uses .....; type TPStrFunc = function(ComponentName : string):string of object;
type TSetCaptionProc = procedure(Component : TWinControl; ContainerClassName : string = 'TPanelTGroupBoxTScrollBox') of object;
type TPStrProc = procedure (ComponentName : string) of object;
type TGetStrFunc = function : string of object; var
cfg : TConfiguration;
mtm : TMailTypeMap;
GetCaption : TPStrFunc;
SetControlCaptions : TSetCaptionProc;
LoadCaptions : TPStrProc;
GetXLSTemplatePath, GetOutputPath : TGetStrFunc;
implementation
.
.
.
.
. initialization try
cfg:=TConfiguration.Create;
GetCaption:=cfg.GetCaption;
SetControlCaptions:=cfg.SetControlCaptions;
LoadCaptions:=cfg.LoadCaptions;
CurrentDateEditMask:=cfg.CurrentDateEditMask;
DateNull:=cfg.DateNull; except
cfg.Free;
mtm.Free;
end; finalization FreeAndNil(cfg);
FreeAndNil(mtm); end.
</textarea>
------
不論是否我發的文,在能力範圍皆很樂意為大家回答問題。 為了補我的能力不足之處,以及讓答案可以被重複的使用,希望大家能儘量以公開的方式問問題。 在引述到我的文時自然會儘量替各位想辦法,謝謝大家! |
rookie_me
一般會員 發表:4 回覆:3 積分:1 註冊:2007-05-25 發送簡訊給我 |
sorry 前輩,我是想自己的function 全在一個物件內(myFunctioUtils) 這樣,用時,或別人讀程式時,一眼就可看出。 所以,問題應該是,要如何做,自已的funcion 物件,不需create就可用 不需 var aaa:myFunctioUtils; begin aaa:=myFunctioUtils.create; aaa.aaaa 而是直接用 myFunctioUtils.aaaa; 即可 ===================引 用 Jasonwong 文 章=================== <textarea name="code" cols="60" rows="10" class="delphi">unit myFunctio; interface uses …; implementation procedure myFunctioUtils.aaaa; var </textarea> |
Coffee
版主 發表:31 回覆:878 積分:561 註冊:2006-11-15 發送簡訊給我 |
我的寫法就是你只要在要用的unit裡面去引用這個unit,那你就可以直使用
如果你其實不需要物件,Jasonwong大的方法也可行,只是我記得要在implementation前先宣告?
------
不論是否我發的文,在能力範圍皆很樂意為大家回答問題。 為了補我的能力不足之處,以及讓答案可以被重複的使用,希望大家能儘量以公開的方式問問題。 在引述到我的文時自然會儘量替各位想辦法,謝謝大家!
編輯記錄
Coffee 重新編輯於 2007-05-25 11:53:43, 註解 無‧
|
rookie_me
一般會員 發表:4 回覆:3 積分:1 註冊:2007-05-25 發送簡訊給我 |
|
Jasonwong
版主 發表:49 回覆:931 積分:581 註冊:2006-10-27 發送簡訊給我 |
你又沒講清楚, 只說不想 CREATE 而以
就參考 Coffee 兄的方式, 在 initialization 下將你的 myFunctioUtils 給 CREATE 就好了 ===================引 用 rookie_me 文 章=================== sorry 前輩,我是想自己的function 全在一個物件內(myFunctioUtils) 這樣,用時,或別人讀程式時,一眼就可看出。 所以,問題應該是,要如何做,自已的funcion 物件,不需create就可用 不需 var ? aaa:myFunctioUtils; begin ? aaa:=myFunctioUtils.create; ? aaa.aaaa 而是直接用 ? myFunctioUtils.aaaa; 即可
------
聰明的人,喜歡猜心;雖然每次都猜對了,卻失去了自己的心 傻氣的人,喜歡給心;雖然每次都被笑了,卻得到了別人的心 |
Kingron
中階會員 發表:1 回覆:51 積分:60 註冊:2005-09-14 發送簡訊給我 |
估计是Java程序员转过来的。 :-)
N多方法: 前面的大大已经给出来了,总结一下: 第一个方法: 直接写function GetCaption:string;,不要使用Class来封装,这样只要直接使用即可,推荐用这种方式。 第二个方式: 用Class,但可以在Init 和Final节添加代码,整个unit类似下面: unit Utils; interface TUtils=class public function GetCaption:String; end; var Utils: TUtils; implemention ... initialization Utils := TUtils.Create; finalization Utils.Free; end; 这样别人只要调用Utils.Caption即可,如果不喜欢Delphi的方式,可以用这种方法。 第三种,使用Class function: unit Utils; interface TUtils=class public class function GetCaption:String; end; var Utils: TUtils; implemention class function TUtils.GetCaption: string; begin .... end;. end; 别人只要使用TUtils.GetCaption即可,也不需要创建了~
------
超级猛料:http://kingron.delphibbs.com |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |