【问题标题】:more memory for TMemo / TRichEdit为 TMemo / TRichEdit 提供更多内存
【发布时间】:2009-11-06 22:27:00
【问题描述】:

有没有办法为备忘录或 RichEdit 分配更多内存(如果处理大文件)

谢谢

【问题讨论】:

    标签: delphi


    【解决方案1】:

    使用LocalAlloc 分配内存,然后使用em_SetHandle 消息将其提供给编辑控件。如果编辑控件需要更多空间,您可以处理en_ErrSpace 通知。 MSDN 在"About Edit Controls" article 中描述了该过程。但是,它不适用于富编辑控件;它们不像编辑控件那样将数据存储在连续的缓冲区中。

    【讨论】:

      【解决方案2】:

      与其加载整个文件,不如将控件用作数据的“窗口”?只需以块的形式加载您的数据,当用户向上或向下滚动时加载更多(并删除一些)。

      【讨论】:

        【解决方案3】:

        我建议切换到另一个编辑控件,例如 SynEdit(它可以在几毫秒内加载 80 mb 的文本文件)。

        【讨论】:

        • 这有点夸张,因为这将接近当前 PC 的正常内存传输速率。加载文件的速度无法超过 I/O 带宽所允许的速度。但是,SynEdit 将文件加载到 TStrings 对象中,这相当快(只要文件足够小以适合系统的可用物理内存和应用程序的地址空间)。对于较大的文件,需要使用诸如内存映射文件之类的东西,这当然可以更快,因为它最初不会引起太多 I/O。但 SynEdit 确实可能比 TMemo 更合适。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-11-10
        • 1970-01-01
        • 2012-10-14
        • 1970-01-01
        • 1970-01-01
        • 2012-11-24
        • 1970-01-01
        相关资源
        最近更新 更多