我在Win32项目中使用Delphi 5(安装了FastMM),并且最近一直在尝试大幅减少此应用程序中的内存使用量.到目前为止,我已将使用量减少了近一半,但在处理单独的任务时发现了一些问题.当我最小化应用程序时,内存使用量从45兆位缩减到1兆位,这归功于它分页到磁盘.当我恢复并重新开始工作时,内存仅增加到15兆.当我继续工作时,内存使用量再次缓慢上升,最小化和恢复将其恢复到15兆.所以我的想法是,当我的代码告诉系统释放内存时,根据Windows仍然保留它,实际的垃圾收集直到很久以后才开始.
任何人都可以确认/否认这种行为吗?是否有可能以编程方式清理内存?如果我继续使用该程序而不执行此手动刷新,我会在一段时间后出现内存不足错误,并希望消除它.谢谢.
编辑:我在about.com上发现了一篇文章,其中提供了很多内容以及其他内存管理领域的链接和数据.
在多层应用程序上,我需要模拟各种TCP/IP错误来测试一些重新连接代码.有谁知道我可以用于此目的的任何工具(基于Windows)?谢谢.
稍微有点背景:我是一名Delphi程序员,重新学习C#(最初在学校学到,直到最近才开始学习),并试图让我的一些Delphi概念转移过来.
目前的情况是,我需要创建一个应用程序,可以根据位置,需要等使用类似数据控件的变量列表中的数据,并且为了在Delphi中显示该信息,我只需使用滚动框和框架.滚动框我可以很容易地用C#面板类替换,但我找不到任何可以使用的东西,它会告诉我如何创建我的框架类以便在面板中使用.我能找到的只是用于Web开发的一些东西.
有人能指出我学习C#框架等效的好方向吗?谢谢.
编辑:
对于非Delphi程序员,框架是一种类似于窗体的控件,允许在其上放置其他控件(按钮,框,网格等),然后框架在窗体上用作控件本身以减少代码重用因为所有框架都具有类似的功能并简化了开发.有关(可能更好)更深入的描述,请参阅about.com或Delphi Basics描述.
我正在查看我们的应用程序中的一些代码,并且从我通常做的事情中发现了一些奇怪的东西.通过异常处理和清理,我们(以及其他许多程序员,我确定)使用嵌入了Try/Except块的Try/Finally块.现在我已经习惯了Try/Finally中的Try/Except,如下所示:
Try
Try
CouldCauseError(X);
Except
HandleError;
end;
Finally
FreeAndNil(x);
end;
Run Code Online (Sandbox Code Playgroud)
但是这个其他代码块是相反的:
Try
Try
CouldCauseError(X);
Finally
FreeAndNil(x);
end;
Except
HandleError;
end;
Run Code Online (Sandbox Code Playgroud)
环顾网络,我看到人们两种方式都这样做,没有解释为什么.我的问题是,哪个获取外部块并且哪个获得内部块是否重要?或者,无论结构的哪种方式,都将处理除外和最后的部分?谢谢.
我们正在尝试将文件从C#dll导入到MapPoint中,并且可以让它读取数据就好了,但我们遇到MapPoint无法识别所有地址的问题.目前,我们的文件不仅包含地址信息,还包含纬度和经度(在Lat和Lon的标题下).我们可以设置任何选项,或者我们可以使用哪种方法让我们告诉MapPoint使用纬度和经度来代替地址或者除了地址之外?到目前为止,我还没有找到任何东西,但无论如何我可能会在错误的地方寻找.谢谢.
我正在尝试使用COM从C#读取excel文件,并且可以将其打开并加载就好了.但是,我不想使用工作表上的所有数据(它每月扩展),只是从工作表顶部下方开始的某个子集(标题第3行,数据第4行)并结束.我现在可以获得一个表示整个数据集的范围Excel.Worksheet.UsedRange
,但接下来我需要将其操作到所需的范围,或者(最好)找到终点以进入我的实际数据检索的另一个范围.谁能告诉我怎么做这些?谢谢.
我想看看将事件从Delphi 5应用程序记录到Windows日志,从这里我看到我可以使用TEventLogger
该类来执行此操作.
但是,我找不到有关该TEventLogger.LogMessage
过程语法的任何文档,因此我不知道所有参数的含义,如何使用它们,甚至可能的值.
我试着环顾四周,所有我觉得是从Embarcadero公司以说明该功能存在,但没有关于它的语法和MSDN是没有帮助,因为我只能找到的BizTalk版本,确实我没有好.
有没有人有这方面的帮助页面或信息可能会对我能用它做些什么有所启发?
好的,我在这里疯了.在过去(差不多)四年中,我一直在从Delphi 5 IDE中遇到一些非常糟糕的行为.问题包括:
最大的问题是我的老板不相信这种情况发生在没有任何用户改变的情况下会出现这些问题.我已经擦过并重新加载了Delphi几次,但这不是我现在可以再做的事情.列出的大多数问题都可以轻松恢复(重新加载IDE或从源代码管理中重新复制文件),但这完全是疯了.我已经从编译时删除了所有警告和提示,但没有掩盖它们.我已尽力遵循Marco和微软的最佳实践.这只是我吗?我是疯了吗?我怎样才能阻止德尔福引起这些麻烦呢?
是否有可能检测到我以外的程序窗口是否1)完全可见,2)部分隐藏,或3)完全隐藏?如果窗口(基于检索到的句柄)不可见,我希望能够告诉我的应用程序不要做任何事情.我不关心窗口是否有焦点,z顺序是什么,或者其他什么,我只是对窗口显示的内容感兴趣.如果我需要别的东西来解决这个问题,我很好,但有可能吗?谢谢.
在我们的Delphi应用程序中,我们使用TStringList来存储字符串和相应的对象.对于另一个项目,我需要在C#中做类似的事情,但我不确定最有效的方法是什么.到目前为止,我已经考虑过使用数组列表,列表或字典.其中一个是否有效我想做什么?如果没有,这是一个好方法吗?