为什么我的程序巨耗系统资源?(50分)

  • 主题发起人 主题发起人 Sachow
  • 开始时间 开始时间
S

Sachow

Unregistered / Unconfirmed
GUEST, unregistred user!
最近做了一个数据库程序,由15个窗体组成,每个窗体上有DBEDIT和ComboBox
若干,我没有用Data Module,TABLE和DATASOURCE都是放在各个窗体上,程序
编译后有1M,但在运行时发现系统资源由92%可用降为65%,比运行DELPHI还降
得多,注明一下,我的机器有256M的内存,这要在别的机器上运行还了得?!!
我在关闭子窗体的时候都关闭TABLE的,但没有把窗体的关闭Action设为acFree
一Free就会出乱子。再提到一点,我的窗体是SDI的,程序在运行时不管再打开
多少次窗体都不会占用更多的系统资源,程序结束后也能正常释放内存,但只要
它在运行,就一定要占那么多资源!各位大侠能否给学生指引,学生感激涕零!
 
窗太多. 建议子窗运行时建立. 其实这样不会出乱子. 只要将原来的
form2.show
改成
if not assigned(form2) then

form2 := tform2.create(application);
form2.show;
然后form2.Onclose中:
form2 := nil;
action := acFree;
这样绝对不会出问题(也不会造成打开多个相同子窗)
 
建议把table/query/database 放到一个统一的 datamodule中,
动态建立form是个办法,不过系统资源也没那么用的呀?
myform := application.createform(tmyform,myform);
try
myform.ShowModule;
finally
myform.free;
myform := nil;
end;
 
某些数据单元如TABLE在不用时要关闭。
 
SDI是否就是MDI?(先弄清这个问题)
 
十几个窗口应该没问题,应该找找别的原因。
我曾经有个程序有近30个窗口,关闭时也没释放资源,32M内存运行得挺好的。
 
尽量不要使用TTable,如表大,资源浪费也较大,用过滤又太费时间。
还是用查询吧。
 
关键是太多的database和table连接, 还是使用datamodule吧:-)
 
我也正头疼于delphi程序的占资源问题.
不过,另一方面,窗口太多显得很零乱, 最好集中到一个窗口,用TpageControl切换.
 
按照Another_eYes君的介绍,我已经成功的解决了问题,系统资源的占用情况降到了
合理的情况,当然也还要感谢CJ君,但是如果完全照您的语句好像行不通呐(我说的
可不是每个字都照抄),不管怎么说,问题能够那么快解决,全是仰仗大家的帮助,
在此先谢了!^o^
修改后的程序由于是在运行时创建窗体,因此打开的速度比以前的明显不及,我想再
请教一下有没有两全齐美的方法,既不占用太多的资源,又能以比较快的速度打开?
我不是想吹毛求疵,只是想探讨一下技术延伸性。
 
M$的程序大部分都是通过PageControl来切换,很少有大量子form的.
 
我也试过用PageControl,但觉得不太方便——当Page上有组件的时候,Page无法隐藏,无法隐藏可不妙。
 
为什么一定要隐藏,disable掉就可以.
 
后退
顶部