Alltags-Probleme

Als Programmierer kommen Sie kaum daran vorbei. Seien es nun Resource-Files, Konfigurationstabellen oder einfache Hilfstexte, ohne Zusatzdateien funktionieren viele Programme nicht.

Um trotz der vielen Dateien die Übersicht zu behalten, hat TOS im Gegensatz zu den Betriebssystemen der 8-Biter, die Fähigkeit, Programme in Ordnern zu verwalten. Diese Ordner dürfen nahezu jeden Namen tragen und beliebig verschachtelt sein. Das Programm muß deshalb auf Zusatzdateien stets korrekt und schnell zugreifen können. Viele Programme verlassen sich darauf, daß alle Zusatzdateien sich stets im aktuellen Verzeichnis befindet. »Aktuell« wird ein Verzeichnis dadurch, daß das aktive Fenster des Desktops es anzeigt.

Die hieraus gestarteten Programme können mit der GEMDOS-Funktion »Fopen()« (GEMDOS 61, hex. $3D) Zusatzdateien öffnen, ohne daß sie dabei komplette Zugriffspfade anzugeben haben. Für »Fopen« genügen Dateinamen (wie »BEISPIEL.EXT«) oder relative Suchpfade (wie »BEISPIEL.FLD\BEISPIEL.EXT«). Dabei rechnet der relative Zugriffspfad stets vom aktuellen Verzeichnis. Aber nicht alle Programme starten vom aktuellen Verzeichnis aus. Melden Sie beispielsweise ein Programm unter TOS 1.4 oder neueren Versionen als Anwendung an, oder tun Sie dies durch Manipulation der DESKTOP.INF-Datei bei älteren Versionen. Nun startet das angemeldete Programm auch, wenn Sie eine andere Datei mit einer spezifischen Extension, auf die Sie das Programm angemeldet haben, anklicken. Wenn das gestartete Programm einfach mittels »Fopen« auf eine Datei relativ zugreift, so sucht TOS diese nun nicht etwa ab dem Verzeichnis des Programms, sondern dem der angeklickten Datei, da diese den aktuellen Pfad festlegt.

Ein anderes Beispiel:

Sie starten ein Programm aus einem nicht-aktuellen Verzeichnis, durch die Tastenkombination < Maus-rechts - Doppelklick links>. Jetzt ist das Suchverzeichnis für »Fopen« ebenfalls ein anderes als das, in welchem das Programm liegt. Dieses Problem ist Atari bei der Entwicklung von TOS 1.4 sehr wohl bewußt gewesen, dennoch beachtet einige Systemsoftware, und selbst die Muster-Applikation 1ST-Word dies nicht. Dementsprechend funktionieren diese Programme als Applikationen angemeldet nicht mehr ordnungsgemäß. Deshalb sollten Sie grundsätzlich keine relativen Zugriffe verwenden, sondern ausschließlich ganze Pfade mit Laufwerkskennungen.

TOS bietet die AES-Funktion »shel_find« (AES 124, hexadezimal $7C). Diese Routine sucht eine Datei innerhalb desjenigen Verzeichnisses, in dem auch die Hauptapplikation abgelegt worden ist. Daraus folgt, daß Sie als Rückgabe einen Pfad erhalten, den Sie dann für »Fopen« benutzen können.

Laurenz Prüßner/mb

shel_find sucht und findet eine Datei, die in einem Verzeichnis liegt, in dem auch die Hauptapplikation ist: shel_find.c



Aus: ST-Magazin 05 / 1990, Seite 58

Links

Copyright-Bestimmungen: siehe Über diese Seite