Trick 52: Dateien
abklappern
Aufgabe: Schnell mal eben eine Anzahl
Dateien durchsehen oder sonstwas
        
mit jeder einzelnen davon machen.
Warum: Gelegentlich will man nicht
nur eine einzelne Datei,
      
sondern gleich ein ganzes Bündel irgendwie behandeln.  
Lösung
Man braucht drei Funktionen:
1. :dirlist
   Die Zusammenstellung
der Namensliste der Dateien
   Dabei kann es sein,
daß diese nicht alle auf nur einem Verzeichnis
   liegen, sondern auch
welche auf einem oder mehreren Unterverzeich-
   nissen. Die Funktion
soll ein bequemes Zusammenstellen einer solchen
   Liste ermöglichen.
2. :firstname
   Aufruf der ersten
Datei (d.h. ihres Namens)
3. :nextname
   Aufruf der
nächsten Datei. Mit Feststellung, ob es keine mehr gibt.
Diese Funktionen wurden in eine
Datei  dirlist.inc  verpackt.
Richtig einfach sind diese
Funktionen nicht, weil allerhand Rand-
bedingungen zu berücksichtigen
sind. 
Die Nutzung ist jedoch ganz leicht.
Hier ganz knapp das Strickmuster,
das man auch für eigene Zwecke
noch modifizieren kann:
(Stellen mit ... sind darin frei
gestaltbar)
 
-----------------------------------------------------
  Flag
#udS setzen: Unterverzeichnisse mitverarbeiten
  (wenn
nicht gewünscht, dann die 1 weglassen)
#udS 1
  Flag
#udE setzen: Liste vor Verarbeitung noch editieren
  (in
einem aresqa-Fenster) Sonst die 1 weglassen
#udE 1 
 
Namensmuster in iV vorbereiten, z.B. c:/allegro/*.apr
var ...
  Und
nun kommen die Funktionen:
  1.
Dateiliste dazu erstellen
perf dirlist
if not $DL
mes Keine Datei gefunden;end
  2.
Ersten Namen in iV kopieren
perf firstname
if "" mes
Abbruch oder keine Datei gefunden;end
 
Schleife. Dateiname steht in iV
:lp
  Hier
einfuegen, was mit der Datei passieren soll
...
  3.
Naechsten Namen in iV kopieren
perf nextname
if "" jump
ende
jump lp
:ende
 
Ende-Aktion nach Verarbeitung der letzten Datei
...
end
 
Unterprogramm einbinden
include
dirlist.inc
 
------------------------------------------------------
Tips:
Die Liste der Dateien ist nach
Ablauf immer noch in der
Variablen  $DL, wo man sie
sich anschauen oder für andere
Zwecke weiterverwenden kann. $DL
wird erstellt in der
Unterfunktion :dirlist, d.h. man
braucht nur diese auszuführen,
wenn man nichts anderes als diese
Variable braucht.
Die Liste kann, weil $DL erhalten
bleibt, auch mehrfach mit
"perf firstname / perf nextname
..." abgearbeitet werden.
Anwendungsbeispiel:
Ein FLEX namens 
DIRLIST.FLX  zeigt: Man kann sich Listen
bestimmter Dateitypen
zusammenstellen und dazu dann eine
alphab. Liste der Dateien mit
Datum, Größe und den ersten
drei Zeilen erstellen lassen.