線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:6877
推到 Plurk!
推到 Facebook!

insufficient memory for this operation 錯誤

答題得分者是:P.D.
tuna5168
一般會員


發表:3
回覆:4
積分:1
註冊:2011-04-10

發送簡訊給我
#1 引用回覆 回覆 發表時間:2011-07-29 10:36:31 IP:59.120.xxx.xxx 訂閱
各位前輩好
目前在跑其中兩個報表時 , 會出現 insufficient memory for this operation 的錯誤訊息
且資料無法跑完

目前已嘗試方法有
1. 修改 BDE INIT (4096/0x5BDE or 8192/0x6BDE 都試過)
2. 將所有CalcField 註解掉 , 仍有這個問題
3. 程式中有用到 onchange event 中傳 key 給其他 Query , 不知道是否有可能會造成 insufficient memory

但在測試時有發現,在 BDE 4.0 時可正常跑完 , 程式搬到 BDE 5.0 大概跑一兩百筆就 insufficient memory
是否有可能不是 code 問題而是環境問題呢?雖然我設定有設一樣

想請問前輩們是否有類似經驗與可能的錯誤原因

謝謝

cancer
高階會員


發表:58
回覆:319
積分:190
註冊:2004-07-31

發送簡訊給我
#2 引用回覆 回覆 發表時間:2011-07-29 18:59:02 IP:220.128.xxx.xxx 未訂閱
Hello, 拜託,OnChange 事件一定要慎用,我同事交給我的程式,所有的 OnChange 事件,幾乎都被我改掉。
DataSet 沒有 OnChange,您寫在 TDataSource.OnDataChange 吧,那好像是以欄位為基準,任何一個欄位的內容有改變就會引發,一筆資料有一百個欄位的話.....
P.D.
版主


發表:603
回覆:4038
積分:3874
註冊:2006-10-31

發送簡訊給我
#3 引用回覆 回覆 發表時間:2011-07-29 23:36:59 IP:118.169.xxx.xxx 未訂閱
你這個現象一般來說, 是陷入無窮迴圈的運算之中了, 
一般來說, ONCHANGE, ONCALC 這兩組是十分容易造成 記憶體不足, 因為如樓主所說, 每觸發一個物件就會導致整組重頭到尾把資料拉一遍, 所以真的是要謹慎使用
===================引 用 tuna5168 文 章===================
各位前輩好
目前在跑其中兩個報表時 , 會出現 insufficient memory for this operation 的錯誤訊息
且資料無法跑完

目前已嘗試方法有
1. 修改 BDE INIT (4096/0x5BDE or 8192/0x6BDE 都試過)
2. 將所有CalcField 註解掉 , 仍有這個問題
3. 程式中有用到 onchange event 中傳 key 給其他 Query , 不知道是否有可能會造成 insufficient memory

但在測試時有發現,在 BDE 4.0 時可正常跑完 , 程式搬到 BDE 5.0 大概跑一兩百筆就 insufficient memory
是否有可能不是 code 問題而是環境問題呢?雖然我設定有設一樣

想請問前輩們是否有類似經驗與可能的錯誤原因

謝謝

tuna5168
一般會員


發表:3
回覆:4
積分:1
註冊:2011-04-10

發送簡訊給我
#4 引用回覆 回覆 發表時間:2011-07-31 15:44:42 IP:114.38.xxx.xxx 訂閱
謝謝 cancer 前輩跟P.D.前輩的提點

其實我也是維護公司交下來的程式, 後來也試改寫 onchange 那段,

但可能因為 delphi 還沒有很熟~~被我改掉後報表資料就跑不出來,還疑惑為何報表要用 onchange 事件

謝謝兩位,我再來研究改寫那段。

系統時間:2024-04-19 15:55:17
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!