Zitat von
HHick123:
Meinst Du, ob man bei einer der "Windows
API-Variante" mit diesem FLAG_FILE_SEQUENTIAL_SCAN von CreateProcess, das himitsu erwähnt hat, oder viellicht anderen Flags noch wesentliche Optimierungen ...
Das könnte durchaus etwas bringen.
Dazu würde ich von der Klasse THandleStream ableiten:
Delphi-Quellcode:
TSeqFileStream =
class(THandleStream)
public
constructor Create(
const FileName:
string; Mode: Word);
destructor Destroy;
override;
end;
constructor TSeqFileStream.Create(
const FileName:
string; Mode: Word);
begin
if Mode = fmCreate
then
begin
FHandle := CreateFile(PChar(FileName), GENERIC_READ
or GENERIC_WRITE, .....);
// CreateFile aus der Windows-API ***
if FHandle < 0
then
raise EFCreateError.CreateResFmt(@SFCreateError, [FileName]);
end else
begin
FHandle := CreateFile(PChar(FileName), .....);
// CreateFile aus der Windows-API ***
if FHandle < 0
then
raise EFOpenError.CreateResFmt(@SFOpenError, [FileName]);
end;
end;
destructor TFileStream.Destroy;
begin
if FHandle >= 0
then FileClose(FHandle);
end;
Die beiden Aufrufe für CreateFile() wären noch zu programmieren. Das wird eine kleine Parameterschlacht, weil es hier so viele Möglichkeiten gibt.