Prise en charge des fichiers de ressources

De RAD Studio
Aller à : navigation, rechercher

Remonter à Ressources et images


Les fichiers de ressources sont uniquement pris en charge par les plates-formes de bureau. Sur les plates-formes mobiles, le système d'exploitation n'accepte pas le chargement depuis des fichiers de ressources. Pour charger des fichiers sur un périphérique mobile, vous devez utiliser une autre approche, et effectuer l'opération de façon externe.

Plates-formes de bureau

Cet exemple affiche comment charger le texte depuis un fichier txt en utilisant un fichier de ressources.

Pour construire et tester cet exemple :

  1. Créez une application multi-périphérique.
  2. Ajoutez les contrôles suivants sur la fiche :
  3. Ajoutez le fichier txt dans le dossier de votre projet.
  4. Accédez à Projet > Ressources et images... et ajoutez le fichier txt.
  5. Construisez le projet pour générer le fichier .rc contenant la référence au fichier txt.
  6. Ouvrez le fichier <project_name>_<resources>.rc. Vous pouvez voir le nom de la ressource, ainsi que le type et le nom du fichier.
Resource_1 RCDATA "<file_name>.txt" 
Remarque : Toutes ces informations sont visibles dans la fenêtre Ressources et images....
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;

Si vous exécutez cet exemple sur des plates-formes mobiles, vous obtiendrez une exception lors du chargement des ressources : class EResNotFound with message "Resource <resource_name> non trouvé" .

Plates-formes mobiles

Cet exemple affiche comment charger le texte depuis un fichier texte sans utiliser de fichier de ressources.

Pour construire et tester cet exemple, créez une application mobile FireMonkey, puis ajoutez les contrôles suivants sur la fiche :

  1. Copiez le fichier txt dans le dossier de votre projet.
  2. Utilisez le Gestionnaire de déploiement pour placer le fichier dans le dossier assets\internal (interne) ou assets (externe) lors du déploiement.
  3. Incluez cette unité à votre projet : System.IOUtils, pour utiliser GetDocumentsPath.
Dans 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();
}
Dans 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;

Voir aussi