に大量のテキストをロードすることについて「速い」ということは何もありません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()
をロードする準備ができたらいつでも呼び出します。これにより、テキストをロードする前にフォームを作成してユーザーに表示する機会が増えます。TMemo
OnShow
ユーザーのハード ドライブに隠しファイルを配置する必要はありません。.exe
フォームが作成されたときに自動ロードされないだけで、テキストをファイル内に埋め込んだままにすることができます。ロードする準備ができたらロードします。