全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:995
推到 Plurk!
推到 Facebook!

如何取得所在程序的程序名稱?

答題得分者是:thomas0728
darnell
版主


發表:25
回覆:103
積分:145
註冊:2003-03-04

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-02-24 11:47:13 IP:61.219.xxx.xxx 未訂閱
如標題,例如...我在Button1的OnClick程序內 procedure TForm.Button1Click(Sender:TObject); begin ShowMessage(?????); end; 程序是可變的,也就是說不一定在哪個程序內, ?????可以顯示出我所在的程序名稱,有辦法做到ㄇ? 請大家幫忙,Thanks~ ------------------------ 創造其實就是...... 轉個彎看世界......
azurecloud
中階會員


發表:52
回覆:108
積分:92
註冊:2003-09-04

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-02-25 04:42:58 IP:163.13.xxx.xxx 未訂閱
Hi, darnell 您好:    procedure TForm1.Button1Click(Sender: TObject);     var name : string;     begin        name := application.exeName;        showmessage(name);     end; 請問這是你要的嗎?    =========== 努力修行中... ===========
bruce0211
版主


發表:157
回覆:668
積分:279
註冊:2002-06-13

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-02-25 08:08:12 IP:211.21.xxx.xxx 未訂閱
我也一直在找這個問題的答案 想在各個自寫的 Function 中若發生錯誤 可秀出 Function 名稱 例如 "My_StrToInt() 錯誤 : 不正確的字串轉換" "My_IntToStr() 錯誤 : 不正確的整數值" 當然,上面的訊息可以依 Function 的不同 寫死在各 Function 內部 但自己寫的 Function 有 200 個時,就懶得用這種方式了... 但似乎沒有答案 ... p.s.application.exeName應該是執行的程式名稱
azurecloud
中階會員


發表:52
回覆:108
積分:92
註冊:2003-09-04

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-02-25 08:35:19 IP:163.13.xxx.xxx 未訂閱
版大不好意思,最近常看對岸同胞的用詞,例如編程,程序員… 所以把程序想像成記憶體中 run 的程式了…    =========== 努力修行中... ===========
speedup
資深會員


發表:19
回覆:259
積分:280
註冊:2003-07-04

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-02-25 09:09:04 IP:61.224.xxx.xxx 未訂閱
引言: 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

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-02-25 10:03:05 IP:61.219.xxx.xxx 未訂閱
引言:
納悶 既然程序式你寫的,要幹麻直接在程式碼寫明就好了,幹麻這摸麻煩
eg.

procedure TForm.Button1Click(Sender:TObject);
begin    ShowMessage('Button1Click');
end;
procedure TForm.Button2Click(Sender:TObject);
begin    ShowMessage('Button2Click');
end; 
混心雜欲 棄修身~唉
恩,沒事這麼麻煩做啥?
寫在裡面當然ok,只是就如bruce0211所說的
若要維護很多的程式碼,如果用這種方法,
維護的成本將很大,而效率也會降低,
是考量所在,謝謝~~
編輯記錄
darnell 重新編輯於 2008-10-19 00:02:29, 註解 無‧
darnell 重新編輯於 2008-10-19 00:09:02, 註解 無‧
thomas0728
中階會員


發表:112
回覆:260
積分:89
註冊:2002-03-12

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-02-26 00:09:06 IP:61.219.xxx.xxx 未訂閱
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

發送簡訊給我
#8 引用回覆 回覆 發表時間:2004-02-26 17:34:40 IP:61.219.xxx.xxx 未訂閱
引言: 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示範一下 嗎?謝謝~~ ------------------------ 創造其實就是...... 轉個彎看世界......
系統時間:2024-05-03 3:18:29
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!