主旨:為了避免已建立的VCL的屬性莫名指向NULL,建議由使用者自己使用new建立TClientDataSet。
說明:
如果不想在Design-time時期設定好TClientDataSet各項參數,可以採用Run-time設計模式。
但如果TClientDataSet是於Design-time時期就已建立,在Run-time時期,該TClientDataSet開啟後,TDataProvider會指向NULL,此時再對該TClientDataSet->Close();,就會發生ACCESS ERROR。
解決方式:
Design-time時期於form表上加入TClientDataSet時,IDE會在 __published 區自動增加TClientDataSet *Temp;
而在Rum-time時,TClientDataSet資料傳輸的主控權即交給IDE自行處理。
所以使用者要擁有較高的管理權,可採自行於程式碼中 new /delete TClientDataSet即可。
2010/3/4 更新
在Help裡查到:
TClientDataSet若是使用SetProvider指向DataSetProvider(Run-time),則TClientDataSet Close()再開前需要再使用SetProvider指向DataSetProvider
動態建立 ClientDataSet 的範例可參考:
ADO and ClientDataSet
沒有留言:
張貼留言