Seite 1 von 1

Probleme mit FastFileMD5()

Verfasst: 23.02.2005 11:30
von MVXA
Hallo!
Ich benutze Rings Fastfile Lib und den FastFileMD5() algo. Das einzige Problem das sich jetzt auftut ist, dass die Funktion irgendwie statt dem MD5 Fingerprint die Datei als String wieder zurück gibt o_O.

Code: Alles auswählen

Debug DateiName + Chr(10) + FastFileMD5(strPfad+DateiName)
So benutzt kommt immer C:\... und wenn ich es so benutz:

Code: Alles auswählen

test.s = "C:\Brot.rar"
Debug FastFileMD5(test.s)
kommt der MD5 print raus. Mit der PB normalen Funktion arbeitet es. Ich tobe schon fast for Wut >_<

Verfasst: 23.02.2005 12:03
von Rings
Nachvollziehbar ist es, aber Sinn machts trotzdem keinen, denn
Der wert wird einwandfrei zurückgegeben

Code: Alles auswählen

strPfad.s="c:\"
DateiName.s="test2.bmp"
Debug DateiName + Chr(10) + FastFileMD5(strPfad+DateiName) ;?????

test.s = strPfad+DateiName
Debug FastFileMD5(test.s)
MD5wert.s=FastFileMD5(test.s)
Debug MD5wert
In deiner App wirst du sicherlich nie DEBUG so einsetzen, sondern immer mit
Werten arbeiten.
Obwohl sicherlich auchan meiner Stelle ein fehler sein kann, vermute ich hier allerdings ein Problem bei 'Debug' .
irgendwie wird der Rückgabewert (Stringpointer) nicht richtig gecheckt . oder ich habe ihn nicht korrekt gesetzt.
Na ja, kein Beinbruch .

Verfasst: 23.02.2005 18:14
von MVXA
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....

Verfasst: 24.02.2005 09:47
von Rings
0- Byte Dateien -> Kein Fingerprint
Ich denke das ist normal, denn das kann ja nicht gehen
1Gb sollte eigentlich aber gehen , obwohl ich meist nur ISO's mit 650MB ausprobiert habe........
Es gibt aber immer Dateien die durch das System belegt (exklusiv Geöffnet) sind die man nicht ansprechen kann (Auch ein Virenscanner hat mit denen Probleme) .

Verfasst: 24.02.2005 13:47
von MVXA
Jaja, ich kann aus erfahrung reden wenn AntiVir Dateien nicht öffnen konnte und ich die nachträglich selber löschen muss weil die bedenkliche Namen haben. Die Crashes machen mich trozdem stuzig.