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

如何把不使用的元件完全free,且不佔記憶體??

答題得分者是:darnell
jackiemi2_seed
中階會員


發表:37
回覆:97
積分:76
註冊:2006-09-11

發送簡訊給我
#1 引用回覆 回覆 發表時間:2008-04-03 15:26:10 IP:61.218.xxx.xxx 訂閱
如附加檔案,
把資料從資料庫捉到grid習慣用這樣的寫法,
突然發現重複查詢時,記憶體越吃越多...
是adoqry沒有完全放掉嗎???
是寫法不好的問題嗎??
thanks
------
OS : Win 7 pro
Program : Delphi 7
DataBase : Ms Sql 2008
附加檔案:47f4869292945_test.rar
編輯記錄
jackiemi2_seed 重新編輯於 2008-12-10 22:11:45, 註解 無‧
shunaaron
高階會員


發表:13
回覆:94
積分:106
註冊:2006-10-06

發送簡訊給我
#2 引用回覆 回覆 發表時間:2008-04-04 00:16:40 IP:220.134.xxx.xxx 訂閱
試看看會不會比較好
adoqry.Connection := nil;
adoqry.Free;
------
程式沒有這麼難
只是還沒打通其中要絕
jackiemi2_seed
中階會員


發表:37
回覆:97
積分:76
註冊:2006-09-11

發送簡訊給我
#3 引用回覆 回覆 發表時間:2008-04-07 08:21:14 IP:61.218.xxx.xxx 訂閱
感謝shunaaron兄的回覆
剛試了一下,好像沒有差別說...
===================引 用 shunaaron 文 章===================
試看看會不會比較好
adoqry.Connection := nil;
adoqry.Free;
------
OS : Win 7 pro
Program : Delphi 7
DataBase : Ms Sql 2008
darnell
版主


發表:25
回覆:103
積分:145
註冊:2003-03-04

發送簡訊給我
#4 引用回覆 回覆 發表時間:2008-12-10 18:27:09 IP:60.250.xxx.xxx 訂閱
的確用這樣的方法似乎第二次載入的資料是另外配置記憶體空間的,
因此並沒有立即釋放掉

我將程式碼改成如下,就不會有記憶體無法釋放的問題了,參考看看~
有兩點要注意
1.要use Provider
2.原來你的範例中Field的型態StringField會跟資料庫的不同WideStringField
因此記的要重新讓ClientDataSet抓一次

[code delphi]
procedure TForm1.Button1Click(Sender: TObject);
var adoqry:tadoquery;
i:integer;
dsp:TDataSetProvider;
begin
try
adoqry:=tadoquery.Create(self);
adoqry.Connection:= ADOConnection1;
adoqry.Close;
adoqry.SQL.Clear;
adoqry.SQL.Add('select item_no,item_name,item_1,item_2,item_3,item_4,'
'item_5,item_6,item_7,item_8 from bas_item_master');
adoqry.Open;

dsp:=TDataSetProvider.Create(Self);
dsp.DataSet:=adoqry;
edit1.Text:='';
cd1.Data:=dsp.Data;
edit1.Text:='結束';
application.ProcessMessages;
finally
FreeAndNil(adoqry);
FreeAndNil(dsp);
end;
end;
[/code]
jackiemi2_seed
中階會員


發表:37
回覆:97
積分:76
註冊:2006-09-11

發送簡訊給我
#5 引用回覆 回覆 發表時間:2008-12-10 22:18:34 IP:210.64.xxx.xxx 訂閱
感謝darnell版主的幫忙,問題解決了
二天幫小弟解決了二個問題,真的很感謝
附加檔案有把darnell版主的用法加上去了,
有興趣的網友可以捉下來玩玩看
------
OS : Win 7 pro
Program : Delphi 7
DataBase : Ms Sql 2008
系統時間:2024-05-16 8:17:46
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!