genauer ausschnitt aus meinem Code wäre diese Funktion, wo der Fehler auftritt:
Code: Alles auswählen
Procedure ExamineFiles(strPfad.s)
DefType.l DateiTyp
DefType.s DateiName
ClearGadgetItemList(#lstFiles)
If ExamineDirectory(0, strPfad, "*.*")
Repeat
DateiTyp = NextDirectoryEntry()
If DateiTyp = 1
DateiName = DirectoryEntryName()
Debug DateiName + Chr(10) + strPfad + DateiName
AddGadgetItem(#lstFiles, -1, DateiName + Chr(10) + UCase(MD5FileFingerprint(strPfad+DateiName)))
EndIf
Until DateiTyp = 0
EndIf
EndProcedure
So kracht es erst recht und verabschiedet sich mit einem "Purebasic.....exe hat ein Problem festgestellt und musste beendet werden.":
Code: Alles auswählen
Procedure ExamineFiles(strPfad.s)
DefType.l DateiTyp
DefType.s DateiName, Datei
ClearGadgetItemList(#lstFiles)
If ExamineDirectory(0, strPfad, "*.*")
Repeat
DateiTyp = NextDirectoryEntry()
If DateiTyp = 1
DateiName = DirectoryEntryName()
Datei = strPfad + DateiName
Datei = FastFileMD5(Datei)
Debug Datei
AddGadgetItem(#lstFiles, -1,DateiName + Chr(10) + Datei)
EndIf
Until DateiTyp = 0
EndIf
EndProcedure
So funkt es aber:
Code: Alles auswählen
Procedure ExamineFiles(strPfad.s)
DefType.l DateiTyp
DefType.s DateiName, Datei
ClearGadgetItemList(#lstFiles)
If ExamineDirectory(0, strPfad, "*.*")
Repeat
DateiTyp = NextDirectoryEntry()
If DateiTyp = 1
DateiName = DirectoryEntryName()
Datei = strPfad + DateiName
;Datei = FastFileMD5(Datei)
AddGadgetItem(#lstFiles, -1,DateiName + Chr(10) + FastFileMD5(Datei))
EndIf
Until DateiTyp = 0
EndIf
EndProcedure
Das ergebniss ist aber nicht gerade das was ich als zufriedenstellend bezeichnen würde. Manche Dateien bekommen kein MD5 Print. Und merkwürdiger weise sind das Dateien die entweder eine größe von 0 Byte haben oder eine größe von 1,03 GB haben. Ich denke, dass liegt aber mehr daran das die Datei bereits geöffnet ist und so kein MD5 Print ausgeführt werden kann. Frag mich aber was zum Teufel die Autoexec.bat, Config.sys, etc offen hält....