[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