【发布时间】:2009-11-06 22:27:00
【问题描述】:
有没有办法为备忘录或 RichEdit 分配更多内存(如果处理大文件)
谢谢
【问题讨论】:
标签: delphi
有没有办法为备忘录或 RichEdit 分配更多内存(如果处理大文件)
谢谢
【问题讨论】:
标签: delphi
使用LocalAlloc 分配内存,然后使用em_SetHandle 消息将其提供给编辑控件。如果编辑控件需要更多空间,您可以处理en_ErrSpace 通知。 MSDN 在"About Edit Controls" article 中描述了该过程。但是,它不适用于富编辑控件;它们不像编辑控件那样将数据存储在连续的缓冲区中。
【讨论】:
与其加载整个文件,不如将控件用作数据的“窗口”?只需以块的形式加载您的数据,当用户向上或向下滚动时加载更多(并删除一些)。
【讨论】:
我建议切换到另一个编辑控件,例如 SynEdit(它可以在几毫秒内加载 80 mb 的文本文件)。
【讨论】:
TStrings 对象中,这相当快(只要文件足够小以适合系统的可用物理内存和应用程序的地址空间)。对于较大的文件,需要使用诸如内存映射文件之类的东西,这当然可以更快,因为它最初不会引起太多 I/O。但 SynEdit 确实可能比 TMemo 更合适。