隐藏我的应用程序的文件

时间:2015-08-20 17:48:07

标签: c++ file c++builder tmemo

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

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

2 个答案:

答案 0 :(得分:0)

WINDOWS: 您可以通过调用SetFileAttributes并设置FILE_ATTRIBUTE_HIDDEN标志来完成此操作。见http://msdn.microsoft.com/en-us/library/aa365535%28VS.85%29.aspx

LINUX: 只需创建以dot开头的文件即可。 (.filename)

答案 1 :(得分:0)

将大量文本加载到TMemo中并没有“快速”。它是一个UI控件,您将文本复制到UI的内部缓冲区中。所以加载需要时间。

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

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

MYTEXT RCDATA "mytext.txt"

在运行时,您可以使用TResourceStream访问资源数据,并使用其TMemo方法将其加载到LoadFromStream()中:

#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你要。这将使表单有机会在您加载文本之前更快地创建和显示给用户。

无需在用户的硬盘上放置隐藏文件。您可以将文本嵌入#topbar #menuitems { position: fixed; background: white; width: 150px; min-height: 10px; right: 20px; top: 95px; border: 1px solid #CDCDCD; z-index:9999; } 文件中,而不是在创建表单时自动加载。准备加载时加载它。