Seite 1 von 1

Problem mit Dateien, DirectoryEntry befehlen, usw.

Verfasst: 20.07.2005 01:02
von zigapeda
So erstmal hallo,

ich hoffe der titel passt weil mir ist nix besseres eingefallen. Wenn nicht sollen ihn bitte die Mods ändern.

so dann zu meinem Problem. Der folgende code sollte erst alle dateien in dem Pure Basic Ordner Debugen und danach überprüfen ob sich eine datei geändert hat oder eine neue dazugekommen ist. ersteres funktioniert schon was eigentlich auch kein problem ist aber bei dem anderen hab ich irgendwo was falsch gemacht.

Code: Alles auswählen

ExamineDirectory(1,"C:\PureBASIC","*.*")

Structure bla
  name.s
  md5summe.s
EndStructure

NewList files.bla()

Repeat
If NextDirectoryEntry()
  a$ = DirectoryEntryName()
  AddElement(files())
  files()\name = a$
  files()\md5summe = MD5FileFingerprint("C:\PureBASIC\" + a$)
Else
  quit = 1
EndIf
Until quit = 1

Debug "-----------------------------------------"

ResetList(files())

While NextElement(files())
  If files()\md5summe <> ""
    Debug files()\name + " : " + files()\md5summe
  EndIf
Wend

Procedure.s searchlist(nametosearch.s)
  ForEach files()
    If files()\name = nametosearch
      ProcedureReturn files()\md5summe
    EndIf
  Next
EndProcedure

Debug "-----------------------------------------"

quit = 0

Repeat
  Repeat
    If NextDirectoryEntry()
      a$ = searchlist(DirectoryEntryName())
      Debug a$
      If a$ = ""
        Debug DirectoryEntryName()
      Else
        If a$ = MD5FileFingerprint("C:\PureBASIC\" + DirectoryEntryName())
        ;bla
        Else
          Debug DirectoryEntryName()
        EndIf
      EndIf
    Else
      ResetList(files())
      quit = 1
    EndIf
  Until quit = 1
  Debug "durchlauf abgeschlossen"
  Delay(1000)
ForEver
so jetzt entschuldige ich mich noch für unschlüssige namen (wie z.B. Structure bla() und die variablennamen z.B. a$) und für meine mangelhafte kommentierung und hoffe mir kann jemand helfen.

Schon mal danke im Voraus.

Verfasst: 20.07.2005 09:08
von walker
Hi,

vor dem Durchlauf (prüfen, ob sich was geändert hat) fehlt ein ExamineDirectory().... das NextDirectoryEntry() läuft so ins leere..... :roll:
..das ResetList(files) kannst Du Dir eigentlich sparen.... ForEach braucht das nicht...

Ulf

Verfasst: 20.07.2005 11:01
von zigapeda
oh :oops:
jetzt hab ich den fehler auch gemerkt. Die if abfrage If NextDirectoryEntry() schlägt die ganze zeit fehl und dann will ich mit resetlist() wieder an anfang des verzeichnisses :lol: . ok also schnell das resetlist in examinedirectory geändert und fertig.

danke für die hilfe