リソース ファイル サポート

提供: RAD Studio
移動先: 案内検索

[リソースと画像...] への移動


リソース ファイルはデスクトップ アプリケーションでのみサポートされています。モバイル プラットフォームでは、OS がリソース ファイルからの読み込みに対応していません。モバイル デバイスにファイルを読み込むには、別のアプローチ、ファイルの外部読み込みを使用します。

デスクトップ プラットフォーム

以下の例では、リソース ファイルを使ってテキスト ファイルからテキストを読み込む方法を示しています。

この例をビルドおよびテストするには:

  1. マルチデバイス アプリケーションを作成します。
  2. 次のコントロールをフォーム上に追加します:
  3. お使いのテキスト ファイルをプロジェクトのフォルダに追加します。
  4. [プロジェクト|リソースと画像...を選択し、そのテキスト ファイルを追加します。
  5. プロジェクトをビルドして、このテキスト ファイルへの参照が記述されている .rc ファイルを生成します。
  6. <プロジェクト名>_<リソース>.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、メッセージ "リソース <リソース名> が見つかりません")。

モバイル プラットフォーム

以下の例では、リソース ファイルを使用せずにテキスト ファイルからテキストを読み込む方法を示しています。

この例をビルドおよびテストするには、マルチデバイス アプリケーションを作成し、次のコントロールをフォーム上に追加します:

  1. お使いのテキスト ファイルをプロジェクトのフォルダにコピーします。
  2. 配置マネージャを使用して、配置時にファイルを assets\internal フォルダ(内部フォルダ)か assets フォルダ(外部フォルダ)に格納します。
  3. 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;

関連項目