[Allegro] Trick 68: Gibt's ein Verzeichnis fuer das Ereignis?

Bernhard Eversberg ev at biblio.tu-bs.de
Mo Mär 3 08:04:54 CET 2008


Trick 68:  Gibt's ein Verzeichnis für das Ereignis?
            Prüfung, ob das Verzeichnis  c:\xyz\abc existiert

Aufgabe: Geschwind mal nachschauen, ob ein bestimmtes Verzeichnis
          eigentlich im System schon vorhanden ist.

Warum: Angenommen, man will eine Datei mit  "open x ..." anlegen und
        der Dateiname enthält einen Pfad. Dann klappt das nur, wenn
        der Pfad schon da ist. Im Fall seines Fehlens erfährt man aber
        mit "if no ..." nur, daß das Öffnen nicht geklappt hat. Der
        Grund dafür kann auch ein anderer sein: z.B. mangelndes
        Schreibrecht, oder die Datei existiert schon und ist schreib-
        geschützt.
        Um sicher zu gehen, könnte man deshalb gerne vorab die
        Existenz des Verzeichnisses schnell mal eben abchecken wollen.
        Für diesen Wunsch sind noch mehr Gründe denkbar.

Lösung:   [Doku dazu:  h xfnam ]
Es geht erfreulich schnell. Sagen wir, man will die Existenz des
Verzeichnisses  c:\allegro\altdaten\kopie  prüfen:

fnam |.c:/allegro/altdaten/kopie
if "" jump fehler

Das ist schon alles!  (Kein / am Ende! Statt / auch \\ möglich.)

Für Wißbegierige folgen noch weiterführende Hinweise.

Was stünde in der iV als Ergebnis, wenn das Verzeichnis existiert?
Da stünde dann einfach nur "kopie" drin, also der letzte Namensteil.
Dasselbe ergibt sich, wenn man schreibt:
   fnam |.c:/allegro/altdaten/kop*

Hier sind also die bequemeren normalen Schrägstriche möglich, aber
der Backslash - verdoppelt - tut es auch. Dabei Vorsicht: Wenn der
Name des Verzeichnisses in einem Datenfeld vorkommt, dürfen die
Backslashe darin nicht verdoppelt sein. Sagen wir, es ist:

#uvz c:\allegro\altdaten\kopie

dann wäre nur zu schreiben:

var "|." #uvz
fnam
if "" jump fehler

Vorsicht:
Am Ende des Namens darf kein Strich sein!
Wie macht man's, Striche am Ende wegzukriegen? So:

var "|." #uvz(F"/\\")

Und geht das auch mit $-Variablen? Ja, das geht:

var "|." $Verz (F"/\\")

Wichtig: Das Spatium zwischen $Verz und der Klammer! Denn die
Namen der $-Variablen sind ja variabel lang, da muß das Programm
erkennen können, wo der Name zu Ende ist: am Spatium eben.

SonderTip:
Dürfen es eigentlich auch bei den Befehlen "open" und "open x"
normale Striche sein? Ja. Vielleicht sogar gemischt? Ja.


Hinweis: Dies ist eigentlich eine Ergänzung zu Trick 53. Der befaßte
sich nur mit der Frage, welche Verzeichnisse an einer bestimmten
Stelle im System anzutreffen sind, nicht gezielt mit der Frage, ob
es ein bestimmtes gibt.




Mehr Informationen über die Mailingliste Allegro