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