Trick 68: Gibt's ein
Verzeichnis für das Ereignis?
Existiert der Pfad
c:\abc\xyz?
Aufgabe: Geschwind mal nachschauen, ob ein bestimmtes Verzeichnis
eigentlich auf dem
System schon existiert.
Warum: Man will dann und wann eine Datei mit "open x ..." anlegen
und
der Dateiname enthält einen
Pfad. Dann klappt das ja nur, wenn
der Pfad schon da ist. Im Fall
seines Fehlens erfährt man aber
mit "if no ..." nur, daß es
nicht geklappt hat. Der Grund kann
dafür auch ein anderer sein:
z.B. mangelndes Schreibrecht auf
dem Verzeichnis, oder Datei
existiert schon und ist schreib-
geschützt. Um sicher zu
gehen, würde man gerne vorab die
Existenz des Verzeichnisses
schnell mal eben abchecken können.
Weitere Gründe für einen
solchen Wunsch sind denkbar.
Lösung: [siehe dazu h xfnam ]
Es geht erfreulich schnell. Sagen
wir, man will die Existenz des
Verzeichnisses
c:\allegro\altdaten\kopie prüfen. So geht's:
fnam |.c:/allegro/altdaten/kopie
if "" jump fehler
Was stünde in der iV als Ergebnis, wenn das Verzeichnis existiert?
Da stünde dann einfach nur "kopie" drin. Dasselbe passiert, 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 ist das OK, und man hätte zu schreiben:
var "|." #uvz
fnam
if "" jump
fehler
Wäre es nicht unpraktisch, in solchen Fällen, wo man den
Verzeichnis-
namen womöglich aus anderer Quelle hat, sich erst noch um die
Striche
kümmern zu müssen? Muß man also nicht.
Vorsicht:
Am Ende des Namens darf kein Strich sein!
Was macht man, wenn man das nicht weiß? So kriegt man sie weg:
var "|."
#uvz(F"/\\")
Und geht das auch mit $-Variablen? Ja, das geht:
var "|."
$Verz (F"/\\")
Wichtig: Das Spatium zwischen dem Variablennamen 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.
ExtraTip:
Gibt es das Laufwerk K:? Das prüft man so:
fnam |.k:\\*.*
if "" jump
fehler
SonderTip:
Dürfen eigentlich bei den Befehlen "open" und "open x" die Striche
auch normal sein? Ja. Auch gemischt? Ja.
Hinweis: Trick 53 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.