[Allegro] Trick 52: Dateien abklappern

Bernhard Eversberg ev at biblio.tu-bs.de
Di Aug 14 10:43:32 CEST 2007


	
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. Es kann
        um alle Dateien eines Typs gehen oder eine Auswahl davon, sie
        können alle auf einem Verzeichnis liegen oder auf mehreren.

Lösung
Man braucht vier 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, auch das Bearbeiten der Liste, d.h. Herausnehmen
    einzelner Dateien.

2. :firstname
    Aufruf der ersten Datei (d.h. ihres Namens)

3. :nextname
    Aufruf der nächsten Datei. Mit Feststellung, ob es keine mehr gibt.

4. filefunc.flx  (eigener FLEX!)
    Die Datei, deren Name in der iV steht, kann bearbeitet, angezeigt,
    kopiert oder gelöscht werden.

Die Funktionen 1-3 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 will.

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.

Die genannten Dateien sind vorerst nur im SVN zu finden:

http://svn.allegro-c.de/allegro/standard/flex/






Mehr Informationen über die Mailingliste Allegro