0

作为一个初学者,我有一个小问题。我已经完成了在 C++ Builder 中开发的一个小应用程序的概念。我使用了一个包含大量文本的 Tmemo,以便在我的应用程序中使用它们。在负载中,我注意到当 Tmemo 在 Concepton 中有大量数据时,它会减慢负载。并且应用程序可以在 3/4 秒或更长时间后显示!所以我决定使用一个包含所有文本的文件。并且使用 TstringList 它可以完美运行并且运行速度很快,但我不希望数据显示出来。

所以我问是否有一种方法可以向用户隐藏应用程序可以使用的文本文件并快速加载其信息。

4

2 回答 2

0

将大量文本加载到TMemo. 它是一个 UI 控件,您正在将文本复制到 UI 的内部缓冲区中。所以加载需要时间。

TMemo但是,为了帮助加快应用程序的启动,不要在设计时直接放置大量文本。从 DFM 流式传输需要时间,这会减慢表单的创建速度,正如您所经历的那样。

相反,将文本放入单独的文件中,并通过将.rc文件添加到项目中来将其编译到应用程序的资源中:

MYTEXT RCDATA "mytext.txt"

在运行时,您可以使用 aTResourceStream访问资源数据并将其加载到TMemousing 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文件中的文本,只是在创建表单时不会自动加载。准备好加载它时加载它。

于 2015-08-21T20:19:21.953 回答
0

WINDOWS:您可以通过调用 SetFileAttributes 并设置 FILE_ATTRIBUTE_HIDDEN 标志来实现。请参阅http://msdn.microsoft.com/en-us/library/aa365535%28VS.85%29.aspx

LINUX:只需创建以点开头的文件。(。文件名)

于 2015-08-20T17:59:42.860 回答