Assign & nil 的用法 |
答題得分者是:ddy
|
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
|||
ddy
站務副站長 發表:262 回覆:2105 積分:1169 註冊:2002-07-13 發送簡訊給我 |
|||
領航天使
站長 發表:12216 回覆:4186 積分:4084 註冊:2001-07-25 發送簡訊給我 |
引言: 請問各位! 我在判斷這個form是否已開啟時, 有人告訴我用 if Form1 <> nil then .... 也有人說 if Assigned(Form1) then .... 請問這兩者有何差別, 那一個比較 "好" ?我是都用if Form1 <> nil then .... 但有一點要注意,當Form1尚未Create時為Nil, 若已經Create之後再Free掉,則Form1不為Nil, 最好在Form1.free之後再設定Form1:=Nil ~~~Delphi K.Top討論區站長~~~
------
~~~Delphi K.Top討論區站長~~~ |
||
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
縱合版主與站長的說明, 小弟另有疑問 如果 form已create 後有 free, 但未設定 form1:= nil 時,
if Assigned(Form1) 其結果如何? 另外, 版主提到用 loop 來測速度, 我想這可能不太容易測的出來, 因為 if這個行為只是在一瞬間發生, 對人類來說速度已不是重點, 只是我比較好奇的是 nil 與 Assigned 兩者在運用上有沒有實際的差異, 例如說在那個情況一定要用Assigned 或 nil , 因為依站長所言, form被create 後未釋放form記憶空間(nil), 則此時如果用 nil則可能判斷錯誤,那是否改用Assigned就可以解決, 如果是這樣, 則以 Assigned 來判斷 form是否存在就比 nil 要好, 那如此又與版主所提到的有所出入, 我想這很可能是觀念問題, 或者是Delphi新舊版相容的問題(就好像 float 與 double, real 的變數宣告一樣), 不知各位意下如何?
|
||
jieshu
版主 發表:42 回覆:894 積分:745 註冊:2002-04-15 發送簡訊給我 |
引言: 縱合版主與站長的說明, 小弟另有疑問 如果 form已create 後有 free, 但未設定 form1:= nil 時, if Assigned(Form1) 其結果如何? 一樣是 True 另外, 版主提到用 loop 來測速度, 我想這可能不太容易測的出來, 因為 if這個行為只是在一瞬間發生, 對人類來說速度已不是重點, 只是我比較好奇的是 nil 與 Assigned 兩者在運用上有沒有實際的差異, 例如說在那個情況一定要用Assigned 或 nil , 因為依站長所言, form被create 後未釋放form記憶空間(nil), 則此時如果用 nil則可能判斷錯誤,那是否改用Assigned就可以解決, 如果是這樣, 則以 Assigned 來判斷 form是否存在就比 nil 要好, 那如此又與版主所提到的有所出入, 我想這很可能是觀念問題, 或者是Delphi新舊版相容的問題(就好像 float 與 double, real 的變數宣告一樣), 不知各位意下如何?
------
人生有夢,逐夢而行 人若為善,福雖未至,禍已遠離 人若為惡,禍雖未至,福已遠離 http://www.taconet.com.tw/jieshu/ |
||
ddy
站務副站長 發表:262 回覆:2105 積分:1169 註冊:2002-07-13 發送簡訊給我 |
引言: 另外, 版主提到用 loop 來測速度, 我想這可能不太容易測的出來, 因為 if這個行為只是在一瞬間發生, 對人類來說速度已不是重點, 只是我比較好奇的是 nil 與 Assigned 兩者在運用上有沒有實際的差異, 例如說在那個情況一定要用Assigned 或 nil , 因為依站長所言, form被create 後未釋放form記憶空間(nil), 則此時如果用 nil則可能判斷錯誤,那是否改用Assigned就可以解決, 如果是這樣, 則以 Assigned 來判斷 form是否存在就比 nil 要好, 那如此又與版主所提到的有所出入, 我想這很可能是觀念問題, 或者是Delphi新舊版相容的問題(就好像 float 與 double, real 的變數宣告一樣), 不知各位意下如何?我寫了一個程式測試它的效能差異 果然是…比較執行時間沒有那一個是絕對的快速,實在是沒什麼差別 我也看過了System、SysUtils...內的程式碼,發現NIL 大部份是用在Pointer 的比較,Assigned 則用在判斷物件 應是老外設計上的習慣,以上述的問題看來,也有可能是Assigned 在物件的判斷上加了些防錯。 噓~~~~~~沉思中… |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |