Einzelnen Beitrag anzeigen

VizeTE

Registriert seit: 31. Dez 2002
178 Beiträge
 
Delphi 5 Enterprise
 
#6

Re: nicht exklusiver Zugriff mit CreateFile erwünscht

  Alt 29. Jun 2009, 10:24
Zitat von Fridolin Walther:
Dein Filestream muss die Datei ebenfalls mit FILE_SHARE_DELETE öffnen
Das ist ein guter Tipp. Ich hatte mich auf die Doku von Delphi beschränkt, aber auch da hätte man das rauslesen können.
Nunja...damit bin ich in Stück weiter gekommen aber leider auch noch nicht am Ziel.

Ich habe einfach als Basis einen THandleStream verwendet und dann ein eigenes Create (ab)geschrieben.
Dabei habe ich bisher nur das öffnen einer bestehenden Datei geändert um zunächst testen zu können.
Jetzt bekomme ich keine Fehlermeldung mehr aber der Inhalt ist einfach Schrott.
(die Dateigröße bleibt gleich, der Inhalt sieht aber wie Speichermüll aus)
Sieht jemand meinen Fehler? ich habe Tomaten auf den Augen.

Delphi-Quellcode:
constructor TMyFileStream.Create(const FileName: string; Mode: Word);
var
  hFile : integer;
begin
  if Mode = fmCreate then
  begin
    hFile := FileCreate(FileName);
    if hFile < 0 then
      raise EFCreateError.CreateResFmt(@SFCreateError, [FileName]);
  end else
  begin
    hFile := integer(CreateFile(PChar(FileName), GENERIC_READ or GENERIC_WRITE,
             FILE_SHARE_DELETE or FILE_SHARE_WRITE or FILE_SHARE_READ, nil, OPEN_EXISTING,
             FILE_ATTRIBUTE_NORMAL, 0));
    if hFile < 0 then
      raise EFOpenError.CreateResFmt(@SFOpenError, [FileName]);
  end;

  inherited Create(hFile);
end;
  Mit Zitat antworten Zitat