2011-06-08 47 views
0

任何人都可以幫忙嗎?如何將大文件(2-5 MB)加載到SynEdit/UniSynEdit中,並且不要讓應用程序卡住,以便快速工作?有虛擬模式嗎?德爾福。 SynEdit - 加載大文件。虛擬模式?

謝謝!

+1

加載一個2-5MB的文件應該是閃電般快速恕我直言。 – jpfollenius 2011-06-08 14:37:36

+0

我不需要點亮任何東西。但是,如果我調整窗口大小(Synedit具有alClient),應用程序就會卡住。 – Michael 2011-06-08 14:45:47

+0

和SynEdit太慢加載大文件。 – Michael 2011-06-08 14:46:59

回答

1

如果調整大小速度很慢,則問題不在加載,而是呈現。文本已經在內存中,但組件必須計算從屏幕開始的每一行。如果編輯器的這部分沒有被優化,它可能會很慢(特別是如果它爲每行或每個字在屏幕上分配了很多小字符串)。

這個組件的瓶頸是當你使用文字換行:TSynWordWrapPlugin.DoWrapLine方法'(做所有的工作)確實依靠熒光筆,並將標記所有文本。我懷疑用一個探查器,你會發現大部分時間都花在這裏。但我沒有看到任何其他處理方式,沒有對主要代碼進行修改。在SynEdit中沒有所謂的「虛擬模式」:它加載所有內容並渲染所有行。

你可以試試Letterpress version,聲稱比原來的SynEdit更快。但它使用相同的包裝邏輯,所以我猜這不會有太大的差別。

如果您使用的是Delphi 6-7版本的編譯器,請使用FastMM4作爲內存管理器:SynEdit執行大量內存分配,而舊版BorlandMM比FastMM4慢很多。使用Delphi的現代版本,FastMM4是默認的MM(內存管理器)。