2009-01-15 32 views
3

我經常碰到的一個問題是,我會在我的使用條款中包括'Windows',然後我會稍後爲某些特定的調用添加'JwaWinBase'。是否可以將單元名稱添加到每個不同單元中的函數的調用中?

但是,'Windows'單元中的許多功能與JwaWinBase中的功能相同,我開始在我的主單元中出現錯誤,直到我通過預先處理正確的方式修復了所有的電話單位名稱,像這樣:

老:

  • CreateProcessAsUser(...)

新:

  • Windows.CreateProcessAsUser(...)
  • JwaWinBase.CreateProcessAsUser(...)

我想知道的,是如果有辦法有單位名稱預先自動 - 每次調用另一個單元中的某個函數?這樣,在將JwaWinBase添加到我的使用子句之前,我可以將「Windows」單元名稱預先添加到任何函數調用中。然後添加JwaWinBase不會給我任何錯誤。

我目前使用德爾福2007年

回答

8

沒有。

但是,函數調用在他們的使用條款中是相反的順序處理的,所以,如果你有這樣的:

uses 
    Windows, JwaWinBase; 

...它會默認調用佐功能。但是,如果將它們反轉:

uses 
    JwaWinBase, Windows; 

...它應該默認調用Windows函數,並且可以根據需要爲您的Jwa函數添加序言。在實現部分(沒有經過充分測試:-))的開始

procedure Blah; inline; 
begin 
    Windows.Blah; 
end; 

procedure Blubb; inline; 
begin 
    JwaWinBase.Blubb; 
end; 

// later: 
procedure UseThem; 
begin 
    Blah; // calls Windows.Blah 
    Blubb; // calls JwaWinBase.Blubb 
end; 

+2

我不知道。謝謝(你的)信息! – Mick 2009-01-16 02:56:20

2

也許這是不夠的,只是切換的使用條款中的兩個單元的順序。

3

如果你真的需要在每個程序的基礎分辨率,你可以嘗試在線代理。

2

如果您使用類似於CodeRush(D7以前版本)或Castalia的編輯器,或者甚至是D2009的模板功能,那麼您可以創建模板,以在您輸入時展開所需的模板。然後你可以在使用部分保留Windows,jwaWinBase命令。您可以將jcpau設置爲擴展到jwaWinBase.CreateProcessAsUser,同時cpau根據您的偏好擴展到CreateProcessAsUser或Windows.CreateProcessAsUser。你只需要通過jwaWinBase中的各種功能併爲它們創建模板以確保安全。

否則,我認爲這是搜索和個案的基礎上取代。

相關問題