1. 程式人生 > >Delphi中,窗體操作的函式free,close,destroy,terminate,Release等

Delphi中,窗體操作的函式free,close,destroy,terminate,Release等

Delphi對窗體的關閉有多個函式:

Hide,Close,Free,Release,Destroy,Terminate,FreeAndNil(),Halt

說明:delphi中nil 和C++中的NULL一樣的意思,指空值,它和0值不一樣;  nil就是空指標, 指標表示的就是記憶體的一個地址     nil表示一個空地址。

Free:先物件判斷不為空再destroy。釋放物件,對於窗體來說,只會釋放物件,而不將窗體物件的指標指向nil,所以free後用assigned函式來判斷還是返回true,只有freeandnil或free後再將指標指向nil。

Close:對於窗體而言,close與hide的區別是如果窗體內有方法執行,close會終止窗體物件所執行的方法.而hide不會釋放窗體及其所有的物件,更不會使指標指向nil。 Destroy:不判斷物件是否為空直接釋放。如果物件已經釋放的話會報錯。用destroy不安全,可以說free是對destroy的封裝和改進; Terminate:Application物件的方法,終止整個應用程式,對於控制檯程式,必須用halt代替。

Release:呼叫這個方法時會觸發free 事件。Release可以在onshow的事件中呼叫而free不可以。Release等待資源不再使用後釋放資源,同樣不修改form指標為nil,所以最好使用release進行資源釋放操作。 Halt:終止整個應用程式。

FreeAndNil (): 釋放物件並把指標指向nil,比較的安全且效率會高些,能提高記憶體的利用率。 在對窗體操作時,單純通過assigned(form1)判斷窗體是否已經建立是不夠的,因為如果窗體通過free /release進行資源釋放的話,form1指向的是一個未知地址,而非nil,所以需要用(not Assigned(ShowForm)) and (not (ShowForm is TForm2)) 來判斷該窗體是否已經建立在記憶體中