Einzelnen Beitrag anzeigen

Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: München
11.412 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: Erkennungszeit von unlesbaren Bytes verkürzen?

  Alt 22. Jun 2004, 13:39
Zitat von shmia:
Dagegen ist das Arbeiten mit TFileStream ist ungepuffert (der Cache des Betriebssystems ist aber dennoch wirksam) und näher am Betriebssystem.
Sorry, aber die Aussage ist falsch. Auch TFileStream arbeitet mit den gepufferten Versionen. Intern ruft TFileStream die Function FileCreate aus SysUtils auf, welche nicht das Flag FILE_FLAG_WRITE_THROUGH setzt, welches den Dateipuffer umgeht.

Original Delphi-7-SysUtils Code:
Delphi-Quellcode:
function FileCreate(const FileName: string): Integer;
{$IFDEF MSWINDOWS}
begin
  Result := Integer(CreateFile(PChar(FileName), GENERIC_READ or GENERIC_WRITE,
    0, nil, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0));
end;
{$ENDIF}
{$IFDEF LINUX}
begin
  Result := FileCreate(FileName, FileAccessRights);
end;
{$ENDIF}
müsste aussehen wie folgend, um den Cache zu umgehen:
Code:
function FileCreate(const FileName: string): Integer;
{$IFDEF MSWINDOWS}
begin
  Result := Integer(CreateFile(PChar(FileName), GENERIC_READ or GENERIC_WRITE,
    0, nil, CREATE_ALWAYS, [color=#f50000]FILE_FLAG_WRITE_THROUGH or [/color]FILE_ATTRIBUTE_NORMAL,
    0));
end;
{$ENDIF}
{$IFDEF LINUX}
begin
  Result := FileCreate(FileName, FileAccessRights);
end;
{$ENDIF}
......
Daniel W.
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat