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

請問在自己寫的class 裡create 的時候要怎樣才知道parent 的 path

尚未結案
SamSam1230
中階會員


發表:128
回覆:178
積分:65
註冊:2004-12-23

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-09-12 14:38:43 IP:218.103.xxx.xxx 未訂閱
如果不override create 多傳一個 argu 請問在自己寫的class 裡create 的時候要怎樣才知道parent 的 application path 呢?
Vicen
高階會員


發表:13
回覆:145
積分:151
註冊:2005-03-14

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-09-13 11:31:20 IP:221.226.xxx.xxx 未訂閱
其实这个问题我看的也不是很明白,没有理解确切意思,但取APP PATH的方法很多,其中 ParamStr(0) 的方法还是比较方便的。 ParamStr 是 System 单元里的,使用参数 0 可以很容易得到APP PATH,这种方法不太受到其它限制。
malanlk
尊榮會員


發表:20
回覆:694
積分:577
註冊:2004-04-19

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-09-13 11:43:10 IP:203.69.xxx.xxx 未訂閱
Application 是 Delphi 的 Global 變數之ㄧ, 除非是 開發 DLL, OCX... 否則都可以在程式中引用    像 著名 的 indy 元件也會用到    
type
  TIdAntiFreeze = class(TIdAntiFreezeBase)
  public
    procedure Process; override;
  end;    implementation    uses
{$IFDEF LINUX}
  QForms;
{$ENDIF}
{$IFDEF MSWINDOWS}
  Forms,
  Messages,
  Windows;
{$ENDIF}    {$IFDEF LINUX}
procedure TIdAntiFreeze.Process;
begin
  //TODO: Handle ApplicationHasPriority
  Application.ProcessMessages;
end;
{$ENDIF}    {$IFDEF MSWINDOWS}
procedure TIdAntiFreeze.Process;
var
  Msg: TMsg;
begin
  if ApplicationHasPriority then begin
    Application.ProcessMessages;
  end else begin
    // This guarantees it will not ever call Application.Idle
    if PeekMessage(Msg, 0, 0, 0, PM_NOREMOVE) then begin
      Application.HandleMessage;
    end;
  end;
end;
{$ENDIF}    end.
不過如想增加元件的獨立性, 可以參考 Forms 裡面的 TApplication 的實作找出你要的功能... 如 Application.ExecName; 就是由呼叫ParamStr這個函式達成的
function TApplication.GetExeName: string;
begin
  Result := ParamStr(0);
end;
SamSam1230
中階會員


發表:128
回覆:178
積分:65
註冊:2004-12-23

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-09-13 11:50:00 IP:218.103.xxx.xxx 未訂閱
我就是要這個了謝謝 vicen 我之前試過用application.exename 但我不知道為什麼我寫的class 不能用 ?? 但這個paramstr(0) 就可以了 可能不是最好的方法 !!! 我也是初學者 !!! 不要怪我呀.. 我最喜歡吃零食啦^.^
SamSam1230
中階會員


發表:128
回覆:178
積分:65
註冊:2004-12-23

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-09-13 11:54:26 IP:218.103.xxx.xxx 未訂閱
我知道了... 我太笨了 因為我根本沒有引用forms 我的class 不要用到forms 所以一直都沒有引用forms.. 哈哈 可能不是最好的方法 !!! 我也是初學者 !!! 不要怪我呀.. 我最喜歡吃零食啦^.^
Vicen
高階會員


發表:13
回覆:145
積分:151
註冊:2005-03-14

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-09-13 13:15:30 IP:221.226.xxx.xxx 未訂閱
呵呵,我一般是能不多引用单元就不多引用的,没有必要为了用 APPLICATION.EXENAME 而去引用 FORMS 单元的,而且APPLICATION.EXENAME就是使用ParamStr(0) 得到的,用最快捷的方法、最少的引用做到想做的功能是比较高效的。
系統時間:2024-05-19 12:27:27
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!