Ressource (Software)

Hintergrundwissen für den Ablauf von Algorithmen
(Weitergeleitet von Resource Code)

Die Ressourcen (englisch resource) einer Software sind die Dateien, die nicht den Ablauf (Algorithmus) des Programms festlegen, sondern das „Hintergrundwissen“ für den Ablauf speichern. Ressourcen sind beispielsweise Wörterbuch-Dateien bei Übersetzungsprogrammen oder die Listen der Namen und Eigenschaften der einzelnen Charaktere in Computerspielen. Ein Beispiel für eine Ressource ist z. B. das Programmsymbol, das im Startmenü oder auf dem Desktop angezeigt wird.

Während das eigentliche Computerprogramm in einer Programmiersprache geschrieben ist, sind Ressourcen meist einfache Grafiken, Textdateien oder Tabellen.[1] Ein Vorteil dieser Trennung ist, dass Programm-Ressourcen auch von Menschen ohne Programmierkenntnisse erweitert oder verändert werden können. So kann man beispielsweise Linguisten an einem Wörterbuch als Ressource für ein Übersetzungsprogramm arbeiten lassen, ohne dass diese viel über das eigentliche Programm bzw. dessen Programmierung wissen müssen.

Microsoft Windows

Bearbeiten

Identifikation einer Ressource

Bearbeiten

Innerhalb eines Programms werden Ressourcen über eine Kombination aus Typ, Kennung und Sprache (siehe Locale)[2] eindeutig identifiziert. Hierbei handelt es sich jeweils um 16-Bit-Zahlen, wobei Typ und Kennung auch ein String sein können. Beim Typ stehen die Zahlen 1 bis 24 für Standardtypen:[3]

Typ Format Beschreibung
1 Cursor-Eintrag Mauszeiger in einer ganz bestimmten Auflösung und Farbtiefe
2 Bitmap z. B. Bilder für Menüeinträge.
3 Icon-Eintrag Symbole in einer ganz bestimmten Auflösung und Farbtiefe
4 Menü Einträge einer Menüleiste oder eines Kontextmenüs
5 Dialog Entwurf eines Fensters
6 String-Tabelle Lokalisierbare Zeichenketten. 16 Stück pro Ressource. Am häufigsten handelt es sich dabei um die Beschriftungen von Formularfeldern, aber beispielsweise auch um regionale Darstellungsformen von Datums- und Zeitangaben.[1]
7 Schriftartenordner
8 Schriftart Schriftschnitt
9 Tastenkombinationen
10 RC Data beliebige Daten
11 Nachrichten-Tabelle Parametrisierbare Zeichenketten (z. B. für Fehlermeldungen).
12 Cursor-Gruppe Liste mit Verweisen auf Cursor-Einträge
13 - nicht belegt
14 Icon-Gruppe Liste mit Verweisen auf Icon-Einträge
15 - nicht belegt
16 Versionsinfo Metadaten mit Programmname, Hersteller, Copyright, Versionsnummer usw., wird z. B. in den Eigenschaften der Programmdatei angezeigt
17 Dialog-Einbindung z. B. Symbolleisten
18 - nicht belegt
19 Plug & Play
20 VxD Virtuelle Gerätetreiber.
21 Animierter Cursor Animierte Mauszeiger, wie beispielsweise eine Sanduhr oder ein sich drehender Kringel, um Warteprozesse zu visualisieren.
22 Animiertes Icon Ähnlich wie animierte Mauszeiger, können auch Symbole animiert sein. Diese Funktion ist nur selten anzutreffen.
23 HTML HTML-Dokumente und damit verknüpfte Dateien (CSS-Dateien, JS- und VBS-Dateien, Bilddateien, Videodateien etc.). Die Engine des Internet Explorers kann diese Inhalte über das res://-Protokoll abrufen und darstellen.[4] Ein Beispiel dafür sind die Fehlerseiten des Internet Explorers.
24 Manifest Metadaten für Theming, GUI-Skalierung und Benutzerkontensteuerung

Neben den numerischen Standardtypen existieren noch ein paar textbasierte Typen mit fester Bedeutung.

Typ Format Beschreibung
AVI Animationen Animationen im AVI-Format.[5] Beispielsweise spielte der Dialog zur Visualisierung von Kopiervorgängen bis einschließlich Windows XP eine sich endlos wiederholende AVI-Animation ab, bei der Dateien von einem Ordner in einen anderen Ordner flattern.[6]
MUI MUI-Daten Informationen für ausgelagerte, mehrsprachige Ressourcenbibliotheken.[7] Sogenannte Satelliten-Assemblies.
TYPELIB Typbibliotheken Schnittstellenbeschreibungen für COM-Elemente.[8]
WAVE WAVE-Sounds Audiodateien im WAV-Format.[9]

Programme machen in unterschiedlichem Umfang von den Möglichkeiten Gebrauch, da die Daten auch in externen Dateien oder im Quellcode abgelegt sein können. Soll eine Programmdatei ein Symbol haben, muss sie das Icon jedoch in Ressourcen enthalten (es wird die lexikografisch erste Icongruppe-Ressource verwendet). Der in der Versionsinfo-Ressource enthaltene Programm- bzw. Firmenname wird häufig in Sicherheitssoftware angezeigt. Diese beiden Typen sind daher in nahezu jeder PE-Datei enthalten.

Resource Code

Bearbeiten

Resource Code wird als Skriptsprache bei der Entwicklung von Programmen unter OS/2 und Windows dazu genutzt, Elemente der grafischen Benutzeroberfläche und Textkonstanten zu definieren. Dadurch kann eine Trennung zwischen Programmcode und Benutzerschnittstelle erreicht werden.

RC-Datei

Bearbeiten

Eine Ressourcendatei (resource script file) enthält einen oder mehrere Ressourcenausdrücke (resource statements), welche jeweils den Typ, Kennung und den Datenwert festlegen. Es handelt sich um eine gewöhnliche Textdatei mit der Endung *.rc, wobei zusätzliche Dateien eingebunden werden können.[10]

Das folgende Beispiel zeigt eine Menü-Ressource (Typ 4). Die Menüleiste besitzt einen Eintrag namens „Datei“. Dem Eintrag auf der Menüleiste ist ein aufklappbares Untermenü (Popup) mit den Einträgen „Öffnen …“, „Drucken“ und „Beenden“ zugeordnet. Die Einträge sind jeweils mit einem horizontalen Strich getrennt. Der Menüpunkt „Drucken“ ist deaktiviert. Die Tastenkombinationen sind Teil der Beschriftung und werden vom Text mit einem Tabulatorzeichen (\t) getrennt. Die Zeichen nach einem Et-Zeichen (&) werden in der GUI unterstrichen dargestellt.

1 MENU DISCARDABLE 
BEGIN
	POPUP "&Datei"
	BEGIN
		MENUITEM "&Öffnen …\tCtrl+O",	101
		MENUITEM SEPARATOR
		MENUITEM "&Drucken\tCtrl+P",	102, INACTIVE
		MENUITEM SEPARATOR
		MENUITEM "&Beenden\tAlt+F4",	103
	END
END

Resourcecompiler

Bearbeiten

Der Ressourcencompiler übersetzt textbasierte Ressourcendateien (*.rc) in binäre Ressourcendateien (*.res). Je nachdem, ob sie im nächsten Schritt PE- (32 oder 64 Bit) oder NE-Dateien (16 Bit) hinzugefügt werden sollen, haben *.res-Dateien ein leicht anderes Dateiformat.[11]

Anwendungen, die auf .NET bzw. dem .Net-Framework beruhen, nutzen ein eigenes Format für mehrsprachige Ressourcen.[12] Das Format basiert auf XML und besitzt die Dateiendung *.resx.[1]

Im HFS Dateisystem unter Mac OS (Classic) bestehen Computerprogramme aus mehreren sogenannten Forks. Die data fork enthält das Programm selbst und die resource fork enthält Töne, Bilder, Texte und beliebige andere Elemente. Das hat den Vorteil, dass beispielsweise bei einer Lokalisierung eines Computerprogrammes zur Übersetzung nicht der eigentliche Programmcode, sondern nur die resource fork verändert werden muss.[13]

Android Apps werden im APK-Format gespeichert. Dabei handelt es sich im Wesentlichen um ein ZIP-Archiv mit einer vorgegebenen Verzeichnisstruktur. Ressourcen werden dabei im res-Verzeichnis abgelegt.[14]

Typ Format Beschreibung
animator Property-Animationen XML-Dateien, mit denen alle Eigenschaften (englisch Properties) von beliebigen Objekten (z. B. Position, Größe, Drehung, Hintergrundfarbe etc.) über eine gewisse Zeitspanne hinweg verändert werden können.[15]
anim View-Animationen XML-Dateien, mit denen bestimmte Eigenschaften von View-Objekten der grafischen Benutzeroberfläche über eine gewisse Zeitspanne hinweg verändert werden können. Das Verfahren eignet sich für Tweening.[16] Diese Art von Ressource ist weniger mächtig als Ressourcen vom Typ animator, dafür jedoch effizienter.[15]
color Farbschema XML-Dateien mit Farbangaben für einzelne Steuerelemente in unterschiedlichen Zuständen.[17] Beispielsweise die Hintergrundfarbe für gedrückte Schaltflächen.
drawable Grafiken Beliebige Raster- und Vektorgrafiken (ggf. in mehreren Auflösungen)
mipmap Launcher-Symbole Icons in verschiedenen Auflösungen und Formen für App-Launcher.
layout Layouts Entwürfe für die grafische Benutzeroberfläche von Aktivitäten.
menu Menü XML-Dateien mit Menüeinträgen (z. B. für Kontextmenüs)
raw Daten Beliebige (binäre) Daten, die als Datenstrom geladen werden können.
values Werte XML-Dateien mit Name-Wert-Paaren. Jeder Eintrag ordnet einem eindeutigen Ressourcennamen einen Wert und den dazugehörigen Datentyp zu.
xml XML Beliebige XML-Dateien.
font Schriftarten Schriftdateien und XML-Dateien mit Angaben zu Schriftfamilien.

Jedem dieser Verzeichnisse können noch design-, auflösungs- und sprachspezifische Qualifikatoren, jeweils mit einem Bindestrich getrennt, angehängt werden. Die Reihenfolge der Qualifikatoren ist allerdings nicht willkürlich.[14]

Beispiele für Qualifikatoren:

  • drawable
    Bilder für die Standardsprache der App. Fallback für alle nicht genauer festgelegten Bilder.
  • drawable-night
    Bilder für den Nachtmodus unabhängig von Sprache und Auflösung.
  • drawable-en
    Bilder für die Sprache Englisch, unabhängig von der Auflösung.
  • drawable-ldpi
    Bilder für Bildschirme mit niedriger Punktdichte (120 DPI), unabhängig von der Sprache.
  • drawable-zh-rCN-land-hdpi
    Bilder für vereinfachtes Chinesisch im Querformat (englisch landscape) auf Bildschirmen mit hoher Punktdichte (240 DPI).
Bearbeiten

Einzelnachweise

Bearbeiten
  1. a b c Nicholas Symmonds: Internationalization and Localization Using Microsoft .NET. 1. Auflage. Apress, Berkeley 2002, ISBN 1-59059-002-3, S. 5 f., 77 ff., 127 ff., doi:10.1007/978-1-4302-0827-3 (englisch).
  2. LCID Structure. In: learn.microsoft.com. 24. Juni 2021, abgerufen am 2. Februar 2023 (englisch).
  3. Jim Walker et al.: Ressourcentypen. In: learn.microsoft.com. 23. September 2022, abgerufen am 1. Februar 2023.
  4. res Protocol. In: learn.microsoft.com. 13. Juli 2016, abgerufen am 1. Februar 2023 (englisch).
  5. Jim Walker et al.: ACM_OPEN Nachricht. In: learn.microsoft.com. 21. September 2022, abgerufen am 1. Februar 2023.
  6. Greg Knox: Windows shell32 animations. In: randomnoun.com. 27. Oktober 2013, abgerufen am 9. Mai 2022 (englisch).
  7. Karl Bridge et al.: MUI-Ressourcenverwaltung. In: learn.microsoft.com. 23. September 2022, abgerufen am 1. Februar 2023.
  8. Steven White, Michael Satran: Typbibliotheksanzeigen und Konvertierungstools. In: learn.microsoft.com. 21. September 2022, abgerufen am 1. Februar 2023.
  9. Drew Batchelor et al.: Wiedergeben von WAVE-Ressourcen. In: learn.microsoft.com. 21. September 2022, abgerufen am 1. Februar 2023.
  10. Jim Walker, Michael Satran: Informationen zu Ressourcendateien. In: learn.microsoft.com. 21. September 2022, abgerufen am 1. Februar 2023.
  11. Jim Walker et al.: Verwenden des Ressourcencompilers (RC-Befehlszeile). In: learn.microsoft.com. 23. September 2022, abgerufen am 1. Februar 2023.
  12. David Pine: Ressourcen in .NET-Apps. In: learn.microsoft.com. 10. Januar 2023, abgerufen am 1. Februar 2023.
  13. The Genius of Mac: ResEdit and resources. In: eclecticlight.co. 4. Juni 2016, abgerufen am 6. Mai 2024 (englisch).
  14. a b App resources overview. In: developer.android.com. Abgerufen am 1. Februar 2023 (englisch).
  15. a b Property Animation Overview. In: developer.android.com. Abgerufen am 16. Juli 2023 (englisch).
  16. View Animation. In: developer.android.com. Abgerufen am 16. Juli 2023 (englisch).
  17. Color state list resource. In: developer.android.com. Abgerufen am 1. Februar 2023 (englisch).