Einzelnen Beitrag anzeigen

VizeTE

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

nicht exklusiver Zugriff mit CreateFile erwünscht

  Alt 25. Jun 2009, 19:14
Hallo,

ich habe vor kurzem die Funktion "CreateFile" und das Flag "FILE_FLAG_DELETE_ON_CLOSE" entdeckt. Wenn ich das richtig verstanden habe erzeugt mir CreateFile eine Datei die dann automatisch gelöscht wird wenn ich das erhaltene Handle schließe oder die Anwendung geschlossen wird.
Soweit so gut.

Ich möchte jetzt also so ein Datei erstellen, füllen und dann an anderer Stelle in ein Blobfeld speichern. Beim speichern bekomme ich dann aber immer die Fehlermeldung das die Datei nicht geöffnet werden kann.

So habe ich das gemacht:
Delphi-Quellcode:
        //Filename enthält schon den gewünschten Pfad und Dateinamen
        Hnd := CreateFile(PChar(FileName), GENERIC_READ or GENERIC_WRITE,
                          FILE_SHARE_DELETE or FILE_SHARE_READ or FILE_SHARE_WRITE,
                          nil, CREATE_ALWAYS,
                          FILE_ATTRIBUTE_TEMPORARY or FILE_FLAG_DELETE_ON_CLOSE, 0);
        ...
        hHdlStream := THandleStream.Create(Hnd);
        hHdlStream.Write(oMemStream, oMemStream.Size); //oMemStream enthält die zu schreibenden Daten
        hHdlStream.Free;

        SendFile(FileName); //hier kommt der Fehler wenn ich "LoadFromFile" aufrufe

        CloseHandle(Hnd);
Kann das überhaupt funktionieren? Falls ja was mache ich falsch? Gibt es bessere Alternativen?
  Mit Zitat antworten Zitat