0

初心者として、私は少し問題があります。C++ Builder で開発された小さなアプリケーションの概念が完成しました。アプリケーションで使用するために、膨大な量のテキストを持つ Tmemo を使用しました。負荷の中で、Tmemo が concepton に大量のデータを持っている場合、負荷が減速し、アプリが 3/4 秒または場合によってはそれ以上表示されることに気付きました! そこで、すべてのテキストを含むファイルを使用することにしました。そして TstringList を使用すると、完全に機能し、高速に実行されますが、開いた目でデータを表示したくありません。

そのため、アプリが使用してその情報をすばやく読み込むことができるテキスト ファイルをユーザーから隠す方法があるかどうかを尋ねています。

4

2 に答える 2

0

に大量のテキストをロードすることについて「速い」ということは何もありませんTMemo。これは UI コントロールであり、テキストを UI の内部バッファにコピーしています。そのため、読み込みに時間がかかります。

TMemoただし、アプリの起動を高速化するために、設計時に大量のテキストを直接配置しないでください。DFM からストリーミングするのに時間がかかり、経験しているようにフォームの作成が遅くなります。

代わりに、テキストを別のファイルに入れ、.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()をロードする準備ができたらいつでも呼び出します。これにより、テキストをロードする前にフォームを作成してユーザーに表示する機会が増えます。TMemoOnShow

ユーザーのハード ドライブに隠しファイルを配置する必要はありません。.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 に答える