Einzelnen Beitrag anzeigen

Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Dateien schreiben Buffergröße optimieren

  Alt 1. Dez 2006, 16:43
Hm. OK. Aber so:
Delphi-Quellcode:
function SplitFile(Filename, DestFolder: string; SplitSize, CntParts: Int64): Integer;
const
  BLOCKSIZE = 4194304;
  //BLOCKSIZE = 32767;
resourcestring
  ChangeDiskMsg = 'Legen sie die nächste Diskette in Laufwerk a: ein.';
var
  hFile : THandle;
  SizeOfFile : Int64; // >4GB
  hPart : THandle;
  Loop : Cardinal;
  Partname : string;
  MemBuffer : array of Byte;
// MemBuffer : array[0..BLOCKSIZE - 1] of Byte;
  BytesToRead, BytesRead, BytesWritten: Int64;
  TotalBytesRead, OverallBytesRead: Int64;
  ProgressCurrent, ProgressOld: Cardinal;
begin
  SetLength(MemBuffer, BLOCKSIZE - 1);
Schreibt er zwar sehr schnell aber in sehr kleinen Happen (Titelleiste flimmert, weil sie ständig aktualisiert wird). Und ist im Endeffekt auch nicht schneller.

Edit:
Er schreibt gar nicht, weil BytesRead immer -1 ist. Auch wenn ich hier dann schreibe:
BytesRead := FileRead(hFile, MemBuffer, Min(length(MemBuffer), BytesToRead));
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat