德尔福。 SynEdit - 加载大文件。虚拟模式?

时间:2011-06-08 14:36:07

标签: file delphi virtual synedit

任何人都可以帮忙吗?如何将大文件(2-5 MB)加载到SynEdit / UniSynEdit中,不要让应用程序卡住,以便快速工作?有虚拟模式吗?

感谢!!!

1 个答案:

答案 0 :(得分:1)

如果调整大小很慢,则问题不是加载,而是渲染。文本已经在内存中,但组件必须从屏幕开始计算每一行。如果编辑器的这一部分没有经过优化,它可能会很慢(特别是如果它确实为屏幕上的每一行或每个字分配了很多小字符串)。

此组件的瓶颈在于您使用文字换行时:TSynWordWrapPlugin.DoWrapLine方法'(完成所有工作)确实依赖于荧光笔并将所有文本标记化。我怀疑使用分析器,你会发现大部分时间都花在这里。但是,如果没有重大的代码修改,我没有看到任何其他方式来处理它。 SynEdit中没有所谓的“虚拟模式”:它加载所有内容并将所有行渲染到内存中。

您可以尝试Letterpress version,声称比原始SynEdit更快。但它使用相同的包装逻辑,所以我猜不会有太大的区别。

如果您使用的是Delphi 6 - 7版本的编译器,请使用FastMM4作为您的内存管理器:SynEdit会进行大量的内存分配,旧的BorlandMM比FastMM4慢得多。使用现代版本的Delphi,FastMM4是默认的MM(内存管理器)。