Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Liste von angehängten Ressourcen


stiftmaster - Fr 26.02.10 13:18
Titel: Liste von angehängten Ressourcen
Hallo,

ich binde per {$R name.RES} ein paar externe Ressourcen direkt mit in die Exe ein. Beim Starten der Applikation speicher ich diese im Temp-Verzeichnis ab. Dafür verwende ich folgende Funktion:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
procedure GetResData(const Resource: Cardinal; const OutFileName: string);
var
  Stream: TResourceStream;
begin
  Stream := TResourceStream.Create(hInstance, PChar('#' + IntToStr(Resource)),
    'FILE');
  try
    Stream.SaveToFile(OutFileName);
  finally
    Stream.Free;
  end;
end;


Dies klappt auch soweit ganz gut. Allerdings muss das Programm nun erweitert werden und ich steh vor folgendem Problem:

Bisher wurde die Funktion mit festen Werten aufgerufen => GetResData(3, 'Verzeichnis/name.txt'). Nun soll das ganze dynnamisch passieren, d.h. ich weiß weder wie viele FILE-Elemente es gibt noch wie die Namen heißen. Ich muss diese also anhand der mitgelieferten Ressourcen auslesen.

Ich brauch also eine String-Liste von 0 bis n die mir pro Listeneintrag den Namen der Ressource speichert. Hab leider nix passendes im Netz gefunden und bin daher auf eure Hilfe angewiesen.

Dankend

Stefan


BenBE - Fr 26.02.10 19:02

Du kannst Dir durch das Auswerten der EXE-Header sowie der Daten der RSRC-Section ein Resource-Directory auflisten lassen. In älteren Delphi-Versionen lag für einen Resourcen-Viewer mal ein Beispiel im Demo-Verzeichnis bei; den kann man dafür als Anhaltspunkt nehmen, auch wenn der extrem umständlich programmiert war.