tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
4
ZUGRIFFE
892
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    jrx jrx ist offline Mitglied Bronze
    Registriert seit
    Aug 2005
    Beiträge
    41
    Hallo Zusammen,

    Das folgende Programm macht nicht was es soll.
    Alle Unterverzeichnisse und Dateien werden angezeigt. Vor den Verzeichnissen gibt es aber keine "Dir:" Ausgabe.
    Das Programm scheint Info.Attr nicht auszuwerten.

    Wo liegt mein Denkfehler?
    Am Freepascal unter Linux wird's wahrscheinlich nicht liegen.

    Vielen Dank für euer Feedback.

    Jan-Rene'

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    
    uses  Sysutils;
     
    procedure GetFileStrukture;
    var Info:TSearchRec;
    begin
        if FindFirst('*',faAnyFile, Info)=0 Then begin
            repeat
                if Info.Attr=SysUtils.FaDirectory Then Write('DIR: ');
                WriteLn(Info.Name);
            until FindNext(Info)<>0;
        end;
        FindClose(Info);
    end;
     
    begin
        GetFileStrukture;
    end.
     

  2. #2
    vop vop ist offline Mitglied Platin
    Registriert seit
    Mar 2004
    Beiträge
    676
    Hi versuch mal

    Code :
    1
    
    if (Info.Attr and SysUtils.FaDirectory) = SysUtils.FaDirectory Then
    gruß vop
     

  3. #3
    jrx jrx ist offline Mitglied Bronze
    Registriert seit
    Aug 2005
    Beiträge
    41
    Hallo vop,

    Danke, jetzt geht es.

    Aber verstanden habe ich es nicht wirklich.
    In meiner Vorstellung hat ja die Variable Info.Attr in jeder Schleife den Wert der gerade gefundenen Datei/Verzeichnis (oder was es sonst noch so gibt).
    Deshalb sollte ja meine Variante eigentlich funktionieren.
    Da liege ich wohl daneben. Vielleicht kriege ich noch einen Tip?

    Jan-Rene'
     

  4. #4
    vop vop ist offline Mitglied Platin
    Registriert seit
    Mar 2004
    Beiträge
    676
    Zum Verständnis:

    Die Variable Attr ist eigentlich die Kombination mehrere Variablen, die jeweils durch Bits represäntiert werden.

    Attr entspricht dabei der Zahl aller gesetzter Bits.

    Für dich ist nur entscheidend, ob das Bit "Unterverzeichnis" gesetzt ist.

    Mit einer AND-Verknüpgung kann man gezielt einzelne Bits erfragen.

    Soweit klar? Wenn nein, mach Dich einmal mit dem Binärsystem vertraut.

    vop
     

  5. #5
    jrx jrx ist offline Mitglied Bronze
    Registriert seit
    Aug 2005
    Beiträge
    41
    Alles Klar!
    Ich habe über die Sache nachgedacht, der Groschen hätte bei mir fallen müssen, weil ich ja auch an Findfirst die zusammengesetzte Variable übergeben habe.

    Danke. Jan-René
     

Ähnliche Themen

  1. findfirst Hilfe
    Von Goldroger im Forum Borland CBuilder und VCL
    Antworten: 2
    Letzter Beitrag: 07.05.05, 17:08
  2. FindFirst und FindNext
    Von saywordgirl im Forum C/C++
    Antworten: 13
    Letzter Beitrag: 01.03.04, 00:13
  3. FINDFIRST/NEXT Hilfe
    Von fuxx im Forum Delphi, Kylix, Pascal
    Antworten: 14
    Letzter Beitrag: 29.06.03, 23:22