如何取得所在程序的程序名稱? |
答題得分者是:thomas0728
|
darnell
版主 發表:25 回覆:103 積分:145 註冊:2003-03-04 發送簡訊給我 |
|
azurecloud
中階會員 發表:52 回覆:108 積分:92 註冊:2003-09-04 發送簡訊給我 |
|
bruce0211
版主 發表:157 回覆:668 積分:279 註冊:2002-06-13 發送簡訊給我 |
|
azurecloud
中階會員 發表:52 回覆:108 積分:92 註冊:2003-09-04 發送簡訊給我 |
|
speedup
資深會員 發表:19 回覆:259 積分:280 註冊:2003-07-04 發送簡訊給我 |
引言: procedure TForm.Button1Click(Sender:TObject); begin ShowMessage(?????); end; 程序是可變的,也就是說不一定在哪個程序內, ?????可以顯示出我所在的程序名稱,有辦法做到ㄇ? 請大家幫忙,Thanks~納悶 既然程序式你寫的,要幹麻直接在程式碼寫明就好了,幹麻這摸麻煩 eg. procedure TForm.Button1Click(Sender:TObject); begin ShowMessage('Button1Click'); end; procedure TForm.Button2Click(Sender:TObject); begin ShowMessage('Button2Click'); end;混心雜欲 棄修身~唉
------
唉~ |
darnell
版主 發表:25 回覆:103 積分:145 註冊:2003-03-04 發送簡訊給我 |
引言:恩,沒事這麼麻煩做啥? 寫在裡面當然ok,只是就如bruce0211所說的 若要維護很多的程式碼,如果用這種方法, 維護的成本將很大,而效率也會降低, 是考量所在,謝謝~~ |
thomas0728
中階會員 發表:112 回覆:260 積分:89 註冊:2002-03-12 發送簡訊給我 |
DELPHI 裡有一個東東叫 PROCEDURE TYPE
他是一種表示某一類程序的樣子
TMYPROCEDURE=PROCEDURE(X:STRING;Y:INTEGER) OF OBJECT;
上面這種表示法叫物件程序型態,這種表示法與物件本身的事件結合
TMYPROCEDURE=PROCEDURE(X:STRING;Y:INTEGER);
上面這種叫全域程序型態
所以透過這種方式就可以解決你們的問題了,怎麼說,舉個例子試試看吧
FUNCTIONG TMAINFORM.My_StrToInt(VSTRING:STRING);
BEGIN
TRY
STRTOINT(VSTRING);
EXCEPT
SHOWERRORMESSAGE(application.exeName);
END;
END; TYPE
TERRORMESSAGEEVENT=PROCEDURE(FUNNAME:STRING) OF OBJECT;
TDISPATCHERMESSAGE=CLASS
PROTECTED
FOnErrorMessage:TERRORMESSAGEEVENT;
PUBLIC
OnErrorMessage:TERRORMESSAGEEVENT READ FOnErrorMessage WRITE FOnErrorMessage; IMPLEMEMNTATION
PROCEDURE TDISPATCHERMESSAGE.ERRORMESSAGE(FUNNAME:STRING);
BEGIN
IF ASSIGNED(OnErrorMessage) THEN
OnErrorMessage(FUNNAME)
END;
END; PROCEDURE TMAINFORM.FORMCREATE(SENDER:TOBJECT);
BEGIN
FDISPATCHERMESSAGE:=TDISPATCHERMESSAGE.CREATE;
FDISPATCHERMESSAGE.OnErrorMessage:=SHOWERRORMESSAGE;
END; PROCEDURE TMAINFORM.SHOWERRORMESSAGE(FUNNAME:STRING);
BEGIN
SHOWMESSAGE('你的程序有問題喔!!!' FUNNAME);
END; 透過這種方式可以實作通透性的訊息處理機制,只要在用點心思就可完成你要的東西了,不知這樣懂了嗎? Thomas Chiou
------
Thomas Chiou |
darnell
版主 發表:25 回覆:103 積分:145 註冊:2003-03-04 發送簡訊給我 |
引言: DELPHI 裡有一個東東叫 PROCEDURE TYPE 他是一種表示某一類程序的樣子 TMYPROCEDURE=PROCEDURE(X:STRING;Y:INTEGER) OF OBJECT; 上面這種表示法叫物件程序型態,這種表示法與物件本身的事件結合 TMYPROCEDURE=PROCEDURE(X:STRING;Y:INTEGER); 上面這種叫全域程序型態 所以透過這種方式就可以解決你們的問題了,怎麼說,舉個例子試試看吧 FUNCTIONG TMAINFORM.My_StrToInt(VSTRING:STRING); BEGIN TRY STRTOINT(VSTRING); EXCEPT SHOWERRORMESSAGE(application.exeName); END; END; TYPE TERRORMESSAGEEVENT=PROCEDURE(FUNNAME:STRING) OF OBJECT; TDISPATCHERMESSAGE=CLASS PROTECTED FOnErrorMessage:TERRORMESSAGEEVENT; PUBLIC OnErrorMessage:TERRORMESSAGEEVENT READ FOnErrorMessage WRITE ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ FOnErrorMessage; IMPLEMEMNTATION PROCEDURE TDISPATCHERMESSAGE.ERRORMESSAGE(FUNNAME:STRING); BEGIN IF ASSIGNED(OnErrorMessage) THEN OnErrorMessage(FUNNAME) END; END; PROCEDURE TMAINFORM.FORMCREATE(SENDER:TOBJECT); BEGIN FDISPATCHERMESSAGE:=TDISPATCHERMESSAGE.CREATE; ^^^^^^^^^^^^^^^^^^^^ FDISPATCHERMESSAGE.OnErrorMessage:=SHOWERRORMESSAGE; ^^^^^^^^^^^^^^^^^^^^^ END; PROCEDURE TMAINFORM.SHOWERRORMESSAGE(FUNNAME:STRING); BEGIN SHOWMESSAGE('你的程序有問題喔!!!' FUNNAME); END; 透過這種方式可以實作通透性的訊息處理機制,只要在用點心思就可完成你要的東西了,不知這樣懂了嗎? Thomas Chiou不好意思,你寫的程式碼在^^^^地方似乎無法執行,可能是小弟才疏學淺, 看不出來這要如何應用在這個問題上,可以以我的Button.onClick示範一下 嗎?謝謝~~ ------------------------ 創造其實就是...... 轉個彎看世界...... |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |