Einzelnen Beitrag anzeigen

Schwedenbitter

Registriert seit: 22. Mär 2003
Ort: Finsterwalde
622 Beiträge
 
Turbo Delphi für Win32
 
#5

AW: Dateien ohne Inhalt (leere Dateien) finden

  Alt 10. Sep 2012, 14:03
Danke für Eure Antworten!

Ich bekomme eine EAccessViolation in der Zeile mit If (Buffer[I] <> 0) Then . Nicht mehr und nicht weniger. Warum ist mir völlig unklar. Dabei sieht die Deklaration wie folgt aus:
Delphi-Quellcode:
Const
   BuffSize      = 1024;
Var
   SR            : TSearchRec;
   F            : File;
   Buffer      : Array [1..BuffSize] Of Byte;
   Res         : Integer;
   IsEmpty      : Boolean;
   I            : Integer;
Aber das wollte ich nicht alles hier schreiben. Deshalb hatte ich ja den Quellcode gepackt angefügt. Was genau - zusätzlich zur Fehlermeldung - braucht Ihr noch für eine schnelle Antwort. Ich bin ja durchaus willig...

Die größte Datei ist bislang ca. 1,5 MB. Üblicher Weise beginnen Dateien nicht eben mal mit Nullen. I.d.R. steht am Anfang ein TAG, der die Datei einem bestimmten Typ zuordnet, bei exe-Dateien steht am Anfang 'MZ' etc.
Mir reicht es bei meiner Suche, wenn ich feststelle, dass die ersten 1024 Bytes (oder weniger) ausschließlich Nullen sind. Dann kann ich per Hand nachsehen. Denn nachsehen und die Dateien mit sinvollen Daten aus dem Backup ersetzen muss ich sowieso. Und weil es um ca. 200 GB an Daten geht, kann/will ich die Dateien nicht komplett auslesen.

Die Schleife werde ich später vorzeitig beenden. Das break steht ja schon auskommentiert da

Warum ich bei 1 und nicht bei 0 mit dem Index angefangen habe, weiß ich auch nicht.

Ich habe jetzt
  • das Array von 0 bis 1023 definiert,
  • habe bei BlockRead Buffer[0] angegeben und
  • lasse die Schleife von 0 bis Pred(Res) laufen
und bekomme trotzdem noch die EAccessViolation.

[edit]
Falls jemand eine leere Datei zum Testen braucht, kann ich die liefern. Gepackt dürfte die ja nicht sehr groß sein
[/edit]
Alex Winzer
  Mit Zitat antworten Zitat