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?