Probleme mit FastFileMD5()

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
MVXA
Beiträge: 3823
Registriert: 11.09.2004 00:45
Wohnort: Bremen, Deutschland
Kontaktdaten:

Probleme mit FastFileMD5()

Beitrag 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 >_<
Bild
Benutzeravatar
Rings
Beiträge: 977
Registriert: 29.08.2004 08:48

Beitrag 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 .
Rings hat geschrieben:ziert sich nich beim zitieren
Benutzeravatar
MVXA
Beiträge: 3823
Registriert: 11.09.2004 00:45
Wohnort: Bremen, Deutschland
Kontaktdaten:

Beitrag 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....
Bild
Benutzeravatar
Rings
Beiträge: 977
Registriert: 29.08.2004 08:48

Beitrag 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) .
Rings hat geschrieben:ziert sich nich beim zitieren
Benutzeravatar
MVXA
Beiträge: 3823
Registriert: 11.09.2004 00:45
Wohnort: Bremen, Deutschland
Kontaktdaten:

Beitrag 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.
Bild
Antworten