Programmieren mit C++

Code-Beispiele & Lösungen

Klassen für allgemeine Aufgaben

Erweiterte FileIterator-Klasse

Die Klasse FullFileIterator erweitert die Basisklasse FileIterator um weitere Suchkriterien. Diese beinhalten:

  • Dateiattribute
  • Zeit- und Datumsvergleiche
  • Größenvergleiche

Auf die Dateiattribute finden boolsche Vergleiche statt, da diese Attribute entweder gesetzt oder nicht gesetzt sind. Die Zeit-, Datums- und Größenvergleiche können hingegen auf gleich, ungleich, größer und kleiner definiert werden.

Öffentliche Member

FullFileIterator( void );
FullFileIterator( 
     const char *ApszFileSpec, 
     BOOL AbRecurseSubdirs = TRUE );

Die erste Variante stellt einen Default-Konstruktor dar, der eine Instanz der Klasse ohne Dateispezifikation erzeugt. Damit eine Suche nach Dateien erfolgen kann, muß eine entsprechende Spezifikation später über Member SetFileSpec vorgenommen werden.

Die zweite Variante erlaubt die Übergabe einer Dateimaske im Parameter ApszFileSpec. Hier sind alle unter DOS bzw. Windows üblichen Dateimasken erlaubt.

Ist AbRecurseSubdirs true, werden auch alle Unterverzeichnisse abgesucht. Soll dies nicht erfolgen, muß AbRecurseSubdirs auf false gesetzt werden.

Konstruktor

BOOL SetAttributes( 
    const char *ApszAttributes = NULL );

Die Funktion SetAttributes setzt die Dateiattribute, die für die Suche berücksichtigt werden sollen. Unterstützt werden vier Attribute, die durch Kleinbuchstaben bezeichnet werden:

Zeichen

Attribut

a

Archive

h

versteckt

r

Nur lesen

s

System

Der Parameter ApszAttributes nimmt die einzelnen Buchstaben in Form einer nullterminierten Liste auf. Wird ein Buchstabe von einem Minuszeichen gefolgt, so bedeutet dies, daß das vorangegangene Attribut gelöscht sein muß. Folgt hingegen ein Plus oder das nächste Attribut bzw. der Stringterminator, so muß das Attribut gesetzt sein. Ist ApszAttributes NULL, werden alle vier Attribute ignoriert.

Das Funktionsergebnis lautet true, wenn die Attribute korrekt gesetzt wurden, ansonten false. Letzteres kann nur dann passieren, wenn der Attributestring ApszAttributes ungültig besetzt ist. Im Fehlerfall bleibt die bisherige Spezifikation aktiv.

Member SetAttributes

Mit der Spezifikation „a-rh“ wird das Objekt angewiesen, nur Dateien zu finden, deren Archiv-Attribut gelöscht ist und die auf versteckt und nur-lesen gesetzt sind.

Beispiel

BOOL SetDate( 
     FI_Comparison AeComparison = FI_Ignore, 
     int AiDay = CiCurrent, 
     int AiMonth = CiCurrent, 
     int AiYear = CiCurrent );

SetDate setzt die Vorgaben für Datumsvergleiche. Der Vergleichsoperator kennt folgende Vergleichsoperationen:

Member SetDate

Konstante

Bedeutung

FI_Ignore

Datum wird ignoriert

FI_EQ

Dateidatum == Spezifikationsdatum

FI_NE

Dateidatum != Spezifikationsdatum

FI_GT

Dateidatum > Spezifikationsdatum

FI_GE

Dateidatum >= Spezifikationsdatum

FI_LT

Dateidatum < Spezifikationsdatum

FI_LE

Dateidatum <= Spezifikationsdatum

Die Parameter AiDay und AiMonth enthalten die Vorgaben für den Tag bzw. den Monat. Erlaubt sind Werte von 1..31 bzw. 1..12. Ungültige Angaben werden nicht berücksichtigt. AiYear spezifiziert das Vergleichsjahr, das von 1980 bis 2099 laufen kann. Bei allen drei Parametern wird mit CiCurrent das aktuelle Datum, also Tag, Monat oder Jahr bezeichnet.

Die Funktionsrückgabe lautet true, wenn die Vergleichsparameter gesetzt werden konnten bzw. false, wenn ein ungültiges Datum übergeben wurde. Im Fehlerfall bleibt die bisherige Spezifikation aktiv.

Vergleichsoperatoren

BOOL SetTime(
    FI_Comparison AeComparison = FI_Ignore,   
    int AiHour = CiCurrent, 
    int AiMinute = 0 );

SetTime setzt die Vorgaben für Dateizeitvergleiche. Der Vergleichsoperator AeComparison kennt folgende Vergleichsoperationen:

Member SetTime

Konstante

Bedeutung

FI_Ignore

Zeit wird ignoriert

FI_EQ

Dateizeit == Spezifikationszeit

FI_NE

Dateizeit != Spezifikationszeit

FI_GT

Dateizeit > Spezifikationszeit

FI_GE

Dateizeit >= Spezifikationszeit

FI_LT

Dateizeit < Spezifikationszeit

FI_LE

Dateizeit <= Spezifikationszeit

AiHour enthält die Stundenangabe von 0..23 und AiMinute die Minuten von 0..59. CiCurrent bezeichnet in beiden Fällen den aktuellen Wert.

Vergleichsoperatoren

BOOL SetSize( 
     FI_Comparison AeComparison = FI_Ignore, 
     long AlSize = 0L );

SetSize setzt die Vorgaben für Dateigrößenvergleiche. Der Vergleichsoperator kennt folgende Vergleichsoperationen:

Member SetSize

Konstante

Bedeutung

FI_Ignore

Größe wird ignoriert

FI_EQ

Dateigröße == Spezifikationsgröße

FI_NE

Dateigröße != Spezifikationsgröße

FI_GT

Dateigröße > Spezifikationsgröße

FI_GE

Dateigröße >= Spezifikationsgröße

FI_LT

Dateigröße < Spezifikationsgröße

FI_LE

Dateigröße <= Spezifikationsgröße

In AlSize wird die Größe der Datei übergeben.

Vergleichsoperatoren

Zur Verdeutlichung des Einsatzes der Klasse sind auf der Begleit-CD mehrere Beispielroutinen enthalten, die hier abzudrucken wenig Sinn machen würde.

Beispielanwendungen





Sachgebiet


© 2009-2012 by Alojado Publishing. Alle Rechte vorbehalten. Ausgewiesene Marken gehören ihren jeweiligen Eigentümern.
Mit der Benutzung dieser Seite erkennen Sie die Nutzungsbedingungen und die Datenschutzerklärung an. Der Betreiber übernimmt keine Haftung für den Inhalt verlinkter externer Internetseiten.
Seite erzeugt 2012-05-20 02:00:40 von textarchiv.alojado.de