Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#8

AW: Beschädigte Datei retten ?

  Alt 17. Jul 2011, 17:02
Nja, es werden nicht alle Fehler als Exception zurückgemeldet.

Einige sagen nur 0, bzw -1 oder "weniger als man lesen wollte" ("0 Byte verarbeitet", bzw. INVALID_FILE_irgendwas oder "konnte nicht alles verarbeiten")
und geben zusätzlich einen Fehlercode (GetLastError) zurück.
TFileStream.Read wertet diese Fehlermeldungen allerdings nicht aus (im Gegensatz zu TFileStream.ReadBuffer), womit an solchen Stellen nichts geschrieben wird.
In Windows NT-Systemen werden unbeschriebene Teile einer Datei automatisch mit Nullen gefüllt.



Wie gesagt, ist ein sehr einfacher Code.
Richtiger/Besser wäre es, wenn sich das Ganze selber an die Sektorgröße der Datenträger anpaßt, wenn man eventuell noch die WindowsFileCache umgeht und wenn man noch die eine oder andere Fehlermeldung des Systems (von Windows) deaktivert.
$2B or not $2B

Geändert von himitsu (17. Jul 2011 um 17:08 Uhr)
  Mit Zitat antworten Zitat