为我的应用程序隐藏文件

hide file for my application

本文关键字:隐藏文件 应用程序 我的      更新时间:2023-10-16

作为初学者,我有一个小问题。我已经完成了用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文件中,而不是在创建表单时自动加载。当你准备好加载它时加载它