Fast jedes Programm oder Systemkomponente verfügt über eine Funktion für Einstellungen und Optionen. Oft werden die Settings nicht für den nächsten Programmstart zwischengespeichert. Diese Aufgabe übernimmt bei »AmigaOS 4« eine Bibliothek.
von Michael Christoph
Bisher gab es auf dem Amiga kein einheitliches Format, mit dem sich Programmeinstellungen verarbeiten und speichern lassen. So findet man neben reinen Text-Dateien (wie sie unter Linux meist anzutreffen sind) auch Dateien im IFF-Format (z.B. verwenden alle Systemeinsteller noch dieses Format). Und dann gibt es auch noch die ganz unstrukturierten Daten, die einfach als Binärdatei geschrieben werden. Und auch die Speicherorte sind »wild« auf der Festplatte verstreut. Neben dem Programmverzeichnis und ENVARC: findet man auch Programme, die ihre Einstellungen im Verzeichnis S: sichern. Höchste Zeit, sich diesem Thema anzunehmen und das System zu vereinheitlichen.
Dieser »Jemand« war bei AmigaOS 4 Stefan Robl, von dem auch
das Programm »AmiDock« stammt. Im Zuge der Neuentwicklung
für AmigaOS 4 wurde auch die application.library entwickelt. Ein
Teil davon sind die Prefs-Objecte, mit denen sich die Einstellungen flexibel
verwalten lassen. Über dieses Interface werden verschiedene Funktionen zum Erzeugen, Verwalten und Lesen von Prefs-Dateien angeboten. Die Daten werden, wie bei Systemdateien auch, in ENV: bzw. ENVARC: gespeichert, sofern kein anderes Basisverzeichnis angegeben wird. Dabei wird XML als Beschreibung verwendet. Doch keine Angst, als Programmierer kommen Sie nicht mit den XML-Anweisungen in Berührung. Dies erledigt alles die application.library für Sie. Durch XML wird aber eine sehr flexible Verarbeitung ermöglicht. Auch Änderungen im Inhalt oder Aufbau sind ohne Eingreifen der Anwendung möglich. Dabei werden alle Arten von Datentypen unterstützt: Text, Zahlen, Datumswerte, Dateinamen, Arrays und sogar binäre Daten (z.B. ein Bild) sind möglich. Und auch Änderungen innerhalb der Beschreibung der Prefs-Dateien wird transparent erledigt. Erste
Schritte Die Methoden mit vorangestelltem »Alloc« reservieren selbstständig Speicherplatz, um den Prefs-Wert aufzunehmen. Bei Verwendung der anderen Methoden müssen Sie sicherstellen, dass der Prefs-Wert im eigenen Programmcode solange nicht freigegeben wird, bis die Prefs-Datei gespeichert wurde. Variablen auf dem Stack sind dazu also ungeeignet, bzw. dann sind die Alloc-Tags zu bevorzugen. Um eine Verknüpfung der Variablen mit dem Prefs-Container herzustellen, wird DictSetObjectForKey() verwendet (Listing 5). Wie sich Array-Werte verwalten lassen, zeigt der Ausschnitt in Listing 6. Wie Sie sehen, ist für jeden Array-Eintrag extra Speicher anzufordern. Über ALPOARR_AddObj können Sie beliebig viele Werte der Verwaltungsstruktur
zuweisen. Es ist auch möglich, Einträge wieder zu entfernen
nutzen Sie dazu Suchen,
lesen und speichern Beim Aufruf von WritePrefs können Sie unterschiedliche Tags mitgeben. Im Beispiel wurde WRITEPREFS_FileName verwendet damit wird der Name der Datei für Voreinstellungen festgelegt. Es können auch absolute Pfadangaben zum Einsatz kommen. Die Tags WRITEPREFS_WriteENV bzw. WRITEPREFS_WriteENVARC kommen zum Einsatz, wenn Sie die Einstellungen in den Verzeichnissen ENV: bzw. ENVARC: ablegen. Für ReadPrefs stehen analog entsprechende Tags (READPREFS_xxx) zur Verfügung. Anhand von WRITEPREFS_LastAppDocs wird der application.library mitgeteilt, dass alle Einstellungen des Programms gespeichert sind. So kann zum Beispiel eine Anwendung auf die neuen Daten reagieren, die in einem eigenen Einstellungsprogramm verändert wurden. Zum
Probieren Bisher wurden allerdings das SDK und passende Unterlagen zur application. In der nächsten Ausgabe werden zeigen wir Ihnen wie Sie mit der utlitiy.library arbeiten. So unscheinbar sie mit Kickstart 2.0 eingeführt wurde, bietet sie mittlerweile eine riesige Fülle an nützlichen Funktionen.
|
|
Download: | enthält: |
---|---|
OeffneInterface.c : Interface öffnen ReadWritePrefs.c : Prefs-Datei schreiben und auslesen (mit Arrays) ReadWriteText.c : Texte und Zeitwerte sichern und laden |
|
os4prog-7-prefsobjects-src.lha, 59.993 bytes |
Kommentare, Fragen, Korrekturen und Kritik bitte an Webmaster
AMIGA schicken.
Zuletzt aktualisiert am 18. Februar 2005, Michael Christoph.