[Allegro] Trick 53: Ordnerwahl + Mehr als 1 Dateityp zur Wahl
Bernhard Eversberg
ev at biblio.tu-bs.de
Mi Aug 15 08:25:16 CEST 2007
Trick 53: Qual der Verzeichniswahl
ExtraTrick: Mehrere Dateitypen gleichzeitig zur Wahl
Aufgabe: Der Nutzer soll ein Verzeichnis auswählen dürfen
Warum: Es kann immer mal vorkommen, daß bestimmte Dinge
wohlsortiert in bestimmten, parallelen Ordnern liegen. Wenn es
dann an die Nutzung der Dinge geht, ist mitunter erst schnell
mal eben der richtige Ordner auszuwählen.
Lösung:
Mit fnam ... geht das nicht direkt, aber indirekt!
In xfnam.rtf steht es auch, aber eher wortkarg...
Sagen wir, es hängen mehrere Unterordner an c:\allegro, und der
Nutzer soll einen davon wählen. Das geht so:
fnam |.c:/allegro/*
ins #uvz
var "Wahl=" #uvz
zur Wahl anbieten
select
if cancel end
gewaehlten Namen in #uvZ
ins #uvZ
var "Ihre Wahl: " #uvZ
mes
In #uvZ steht dann nur der Name des Unterordners, den man also
mit c:\allegro\ zusammensetzen muß zum vollständigen Pfadnamen,
z.B. mit var "c:\\allegro\\" #uvZ
Der Trick steckt in der ersten Zeile, also in dieser Syntax:
fnam |.<verzeichnisname>/*
Hier kann man somit statt c:/allegro jeden beliebigen Ordnernamen
einsetzen, mit / oder \\ als Trennzeichen zwischen den Stufen.
Statt nur * könnte da z.B. a* stehen, dann würden nur die mit
a beginnenden Ordnernamen angeboten.
Der Befehl fnam |. schreibt die Namen der Unterordner in die iV,
bietet sie also nicht selber zur Wahl an! Das tut erst der Befehl
select, der sich mit der korrekten Syntax anschließt.
Statt als select-Liste kann man auch die Namen als ViewListe anbieten.
Beide Rezepte sind als Beispiele 3 und 4 in der Dokumentation zum
Befehl fnam genau angegeben! Trick 53 ist also streng genommen
überflüssig - aber hatten Sie's schon gewußt?
Damit sich's aber trotzdem lohnt, hier noch ein
ExtraTrick:
Dem Nutzer sollen alle Dateien vom Typ .flx und .inc gemeinsam
zur Wahl angeboten werden! Das geht so:
fnam FLEXdateien|*.flx;*.inc
Ergo: Hinter dem | kann nicht nur einer, sondern mehrere Dateitypen
stehen, getrennt durch ;. Das ist nicht neu, das war schon lange so,
es stand bloß noch nirgends.
Wenn es ein bestimmtes Verzeichnis sein soll, z.B. c:\allegro\flex,
dann muß es so aussehen:
fnam FLEXdateien|c:\\allegro\\flex\\*.flx;*.inc
Hier allerdings geht / statt \\ nicht, sorry. Es liegt einfach daran,
daß nicht alle internen Windows-Funktionen in dem Punkt einheitlich
arbeiten.
Mehr Informationen über die Mailingliste Allegro