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

ClientDataSet記憶體釋放問題

答題得分者是:SnoopyChen
david_chen1975
一般會員


發表:3
回覆:6
積分:1
註冊:2005-04-07

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-04-21 10:27:44 IP:220.130.xxx.xxx 未訂閱
想請問一下 ClientDataSet1.Data=ClientDataSet2.Delta; ClientDataSet1.Close; ClientDataSet2.Close; 為什麼記憶體都無法釋放,是不是要下其他指令.
deity
尊榮會員


發表:90
回覆:876
積分:678
註冊:2003-05-09

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-04-21 10:44:07 IP:218.15.xxx.xxx 未訂閱
引言: 想請問一下 ClientDataSet1.Data=ClientDataSet2.Delta; ClientDataSet1.Close; ClientDataSet1.Free; ClientDataSet2.Close; ClientDataSet2.Free; 為什麼記憶體都無法釋放,是不是要下其他指令.
加上红色部分,试试~ <>~~~静心养德~~~
david_chen1975
一般會員


發表:3
回覆:6
積分:1
註冊:2005-04-07

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-04-21 11:03:08 IP:220.130.xxx.xxx 未訂閱
ClientDataSet1及ClientDataSet2我不是動態Create的,他是貼在畫面的
Jasonwong
版主


發表:49
回覆:931
積分:581
註冊:2006-10-27

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-04-21 12:32:11 IP:203.75.xxx.xxx 未訂閱
引言: ClientDataSet1及ClientDataSet2我不是動態Create的,他是貼在畫面的
那你是要釋放什麼, 請講清楚 -- 把手握緊,裡面什麼也沒有 把手鬆開,你擁有的是一切
------
聰明的人,喜歡猜心;雖然每次都猜對了,卻失去了自己的心
傻氣的人,喜歡給心;雖然每次都被笑了,卻得到了別人的心
david_chen1975
一般會員


發表:3
回覆:6
積分:1
註冊:2005-04-07

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-04-21 12:50:14 IP:220.130.xxx.xxx 未訂閱
我指的是,每執行一次以下指令 ClientDataSet1.Data=ClientDataSet2.Delta; ClientDataSet1.Close; ClientDataSet2.Close; 記憶體佔用就會增加,都不會下降,是不是該執行什麼指令,讓記憶體釋放, 否則久了,記憶體就被佔光了.
pcplayer99
尊榮會員


發表:146
回覆:790
積分:632
註冊:2003-01-21

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-04-22 03:33:18 IP:219.133.xxx.xxx 未訂閱
引言: 我指的是,每執行一次以下指令 ClientDataSet1.Data=ClientDataSet2.Delta; ClientDataSet1.Close; ClientDataSet2.Close; 記憶體佔用就會增加,都不會下降,是不是該執行什麼指令,讓記憶體釋放, 否則久了,記憶體就被佔光了.
我在其它BBS上看到有人说,连Free掉ClientDataSet,吃掉的记忆体都不会释放。不知道是不是真的,我自己没测试过。
SnoopyChen
一般會員


發表:1
回覆:17
積分:18
註冊:2003-07-24

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-04-23 00:44:31 IP:211.21.xxx.xxx 未訂閱
引言: 想請問一下 ClientDataSet1.Data=ClientDataSet2.Delta; ClientDataSet1.Close; ClientDataSet2.Close; 為什麼記憶體都無法釋放,是不是要下其他指令.
TClientDataSet.Data資料型態是OleVariant, 在Delphi中可用Variant型態自動轉換之, 所以用Null可以將之前所用空間釋放掉。 因為你並非是以Open由TDataSetProvider取得資料集, 故在此用Close無效。
xu_caishen
一般會員


發表:6
回覆:20
積分:5
註冊:2005-04-15

發送簡訊給我
#8 引用回覆 回覆 發表時間:2005-04-23 09:00:09 IP:219.130.xxx.xxx 未訂閱
引言: 想請問一下 ClientDataSet1.Data=ClientDataSet2.Delta; ClientDataSet1.Close; ClientDataSet2.Close; 為什麼記憶體都無法釋放,是不是要下其他指令.
不是用Close.請試一下以下語句: ClientDataSet1.Data=ClientDataSet2.Delta; ClientDataSet1.EmptyDataSet; ClientDataSet2.EmptyDataSet;
david_chen1975
一般會員


發表:3
回覆:6
積分:1
註冊:2005-04-07

發送簡訊給我
#9 引用回覆 回覆 發表時間:2005-04-25 10:18:40 IP:220.130.xxx.xxx 未訂閱
謝謝大家的回覆,我測試後,我也是用SnoopyChen的方法,將Data:=NULL,這樣記憶體就會釋放回去了.
系統時間:2024-04-20 20:16:19
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!