[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