リソース ファイル サポート
[リソースと画像...] への移動
リソース ファイルはデスクトップ アプリケーションでのみサポートされています。モバイル プラットフォームでは、OS がリソース ファイルからの読み込みに対応していません。モバイル デバイスにファイルを読み込むには、別のアプローチ、ファイルの外部読み込みを使用します。
デスクトップ プラットフォーム
以下の例では、リソース ファイルを使ってテキスト ファイルからテキストを読み込む方法を示しています。
この例をビルドおよびテストするには:
- マルチデバイス アプリケーションを作成します。
- 次のコントロールをフォーム上に追加します:
- お使いのテキスト ファイルをプロジェクトのフォルダに追加します。
- [プロジェクト|リソースと画像...]を選択し、そのテキスト ファイルを追加します。
- プロジェクトをビルドして、このテキスト ファイルへの参照が記述されている .rc ファイルを生成します。
- <プロジェクト名>_<リソース>.rc ファイルを開きます。このファイルには、リソースの名前、リソースの種類、ファイルの名前が記述されています。
Resource_1 RCDATA "<file_name>.txt"
- メモ: この情報はすべて、[プロジェクト|リソースと画像...]を選択して開かれる[<プロジェクト ファイル> のリソース]ダイアログ ボックスに表示されます。
C++Builder
void __fastcall TForm1::Button1Click(TObject *Sender) {
TResourceStream *Stream = new TResourceStream((int)HInstance, "<Resource identifier>", RT_RCDATA); //RT_RCDATA is the Resource Type.
__try {
TStringList *List = new TStringList;
__try {
List->LoadFromStream(Stream);
Label1->Text = List->Text;
}
__finally {
List->DisposeOf();
}
}
__finally {
Stream->DisposeOf();
}
}
Delphi
procedure TForm1.Button1Click(Sender: TObject);
var
List: TStringList;
Stream: TResourceStream;
begin
Stream := TResourceStream.Create(HInstance, '<Resource identifier>', RT_RCDATA);
try
List := TStringList.Create;
try
List.LoadFromStream(Stream);
Label1.Text := List.Text;
finally
List.Free;
end;
finally
Stream.Free;
end;
end;
この例はモバイル プラットフォームでも実行することができますが、リソースを読み込もうとすると、例外が発生します(クラス EResNotFound、メッセージ "リソース <リソース名> が見つかりません")。
モバイル プラットフォーム
以下の例では、リソース ファイルを使用せずにテキスト ファイルからテキストを読み込む方法を示しています。
この例をビルドおよびテストするには、マルチデバイス アプリケーションを作成し、次のコントロールをフォーム上に追加します:
- お使いのテキスト ファイルをプロジェクトのフォルダにコピーします。
- 配置マネージャを使用して、配置時にファイルを
assets\internal
フォルダ(内部フォルダ)かassets
フォルダ(外部フォルダ)に格納します。 - GetDocumentsPath を使用するために、プロジェクトに System.IOUtils ユニットを組み込みます。
C++Builder の場合
void __fastcall TForm1::Button1Click(TObject *Sender)
{
TStringList *List=new TStringList;
__try {
List->LoadFromFile(System::Ioutils::TPath::GetDocumentsPath + PathDelim + "example.txt"); // #include <System.IOUtils.hpp>
Label1->Text = List->Text;
}
__finally {
List->DisposeOf();
}
Delphi の場合
procedure TForm6.Button1Click(Sender: TObject);
var
List: TStringList;
begin
List := TStringList.Create;
try
List.LoadFromFile(TPath.GetDocumentsPath + PathDelim + 'example.txt');
Label1.Text := List.Text;
finally
List.Free;
end;
end;