作为初学者,我有一个小问题。我已经完成了用c++ Builder开发的一个小应用程序的构思。为了在我的应用程序中使用它们,我使用了一个有大量文本的Tmemo。在加载中我注意到,当Tmemo在概念中有大量数据时,它会减慢加载速度,并且应用程序可以在3/4秒或有时更长时间后显示!所以我决定使用一个包含所有文本的文件。使用TstringList它工作得很好,运行得很快,但是我不想让别人看到数据。
所以我问是否有一种方法可以隐藏文本文件的用户,应用程序可以使用和快速加载其信息。
WINDOWS:您可以通过调用SetFileAttributes并设置FILE_ATTRIBUTE_HIDDEN标志来实现。见http://msdn.microsoft.com/en-us/library/aa365535%28VS.85%29.aspx
LINUX:只需创建以点开头的文件。(.filename)
将大量文本加载到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
文件中,而不是在创建表单时自动加载。当你准备好加载它时加载它