Zitat von
devidespe:
Vielleicht verstehe ich das falsch, aber der Aufruf von CreateFile bedeutet doch eigentlich nicht, dass ich die Datei erstellen möchte. Ich dachte, mit "OPEN_ALWAYS" wird die Datei lesend geöffnet und ein Dateihandle erzeugt.
CreateFile erzeugt ein File-
Handle ... was genau mit der Datei gemacht wird, entscheiden die Parameter.
Also bei dir wird die Datei im Lese-/Schreibzugriff geöffnet und wenn die Datei nicht existiert wird auch noch versucht Eine zu erzeugen.
OPEN_ALWAYS = Datei versuchen zu öffnen und wenn nicht existent, dann versuchen zu erstellen
CREATE_ALWAYS = immer neu erstellen (Existierendes überschreiben)
CREATE_NEW = Datei neu erstellen, aber abbrechen, wenn datei schon existiert
OPEN_EXISTING = nur öffnen (nur möglich, wenn Datei existiert)
OPEN_ALWAYS = Schreibzugriff, aber eine CD ist nur ReadOnly, darum ist auch kein Schreibzugriff möglich
Delphi-Quellcode:
var DateiPfad: String;
FDateiRead := CreateFile(PChar(DateiPfad), GENERIC_READ,
0, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
if FDateiRead = INVALID_HANDLE_VALUE then
ShowMessage(SysErrorMessage(GetLastError));