将大量文本加载到TMemo 中并没有什么“快速”。它是一个 UI 控件,您正在将文本复制到 UI 的内部缓冲区中。所以加载需要时间。
但是,为了帮助加快应用程序的启动,请不要在设计时将大量文本直接放在 TMemo 中。从 DFM 流式传输需要一些时间,这会减慢表单的创建速度,正如您所经历的那样。
相反,将文本放入一个单独的文件中,并通过将.rc 文件添加到您的项目中,将其编译到您的应用资源中:
MYTEXT RCDATA "mytext.txt"
然后,您可以在运行时使用TResourceStream 访问资源数据并使用LoadFromStream() 方法将其加载到TMemo:
#include <memory>
void TMyForm::LoadMemoText()
{
std::auto_ptr<TResourceStream> strm(new TResourceString(HInstance, "MYTEXT", RT_RCDATA));
Memo1->Lines->LoadFromStream(strm.get());
}
当您准备好加载TMemo 文本时调用LoadMemoText(),例如在表单的OnShow 事件中,或在计时器中,或响应用户操作,或在您需要的任何时候。这将使表单有机会在您加载文本之前更快地创建并向用户显示。
无需在用户的硬盘上放置隐藏文件。您可以将文本嵌入到 .exe 文件中,只是在创建表单时不会自动加载。当你准备好加载它时加载它。