Einzelnen Beitrag anzeigen

Benutzerbild von Sunlight7
Sunlight7

Registriert seit: 17. Sep 2006
Ort: Sonnensystem, Zentral
1.522 Beiträge
 
Delphi 5 Standard
 
#1

Truncate/SetEndOfFile, verhindern das Datei genullt wird

  Alt 14. Jan 2009, 04:12
Moin DP!

Mich nervt gerade das Problem, das mir (große) Dateien immer genullt werden, was mir zu lange dauert, für meine Zwecke unnötig ist und meine Nerven strapaziert...

Ums auf den Punkt zu bringen hab ich einen Test QT gemacht:
Delphi-Quellcode:
   var F:File;
    i:Cardinal;
    PC:Array[0..65535] of Char;
begin
   AssignFile(F, 'L:\~Test.tmp');
   ReWrite(F, 1);
   i:=1 * 1024 * 1024 * 1024;
   Seek(F, i+65536);
   Truncate(F);
   Seek(F, i);
   BlockWrite(F, PC, 65536); // Hier haben wir das Die-Lämmer
   CloseFile(F);
end;
Sobald ich Daten ans Ende der Datei schreibe wird die komplette Datei von Anfang bis FilePos genullt und erst dann die eigentlichen Daten geschrieben...

Ich habs versucht, die Datei (mit der Größe) zu erstellen, schließen, öffnen und dann ans Ende schreiben, aber das half nix, sie wurde wieder genullt

Dann hab ichs direkt mit der WinAPI versucht, aber auch da war der selbe Effekt


Wie kann ich ans Ende einer Datei schreiben ohne das alles davor genullt wird?


MfG, Sun
Windows: Ja - Microsoft: Nein -> www.ReactOS.org
  Mit Zitat antworten Zitat