Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
File 德尔菲。SynEdit-加载大文件。虚拟模式?_File_Delphi_Virtual_Synedit - Fatal编程技术网

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

File 德尔菲。SynEdit-加载大文件。虚拟模式?,file,delphi,virtual,synedit,File,Delphi,Virtual,Synedit,有人能帮忙吗?如何将大文件(2-5MB)加载到SynEdit/UniSynEdit中,并且不让应用程序卡住,从而快速工作?有虚拟模式吗 谢谢 如果大小调整缓慢,则问题不是加载,而是渲染。文本已经在内存中,但组件必须计算屏幕上开始的每一行。若编辑器的这一部分并没有优化,那个么它可能会很慢(特别是当它为屏幕上的每一行或每一个单词分配了很多小字符串时) 该组件的瓶颈是当您使用文本字包装时:TSynWordWrapPlugin.DoWrapLine方法(完成所有工作)确实依赖荧光笔,并将标记所有文本。我

有人能帮忙吗?如何将大文件(2-5MB)加载到SynEdit/UniSynEdit中,并且不让应用程序卡住,从而快速工作?有虚拟模式吗


谢谢

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

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

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


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

加载一个2-5MB的文件应该是闪电般快的IMHO。我不需要点亮任何东西。但如果我调整窗口大小(Synedit有alClient),应用程序就会卡住。Synedit加载大文件的速度太慢。你的意思是不需要突出显示任何内容吗?是的,我不需要,只需加载并显示文本即可