Hallo DPler
ich möchte herausfinden, ob ich in einem Verzeichnis schreiben kann(Es dreht sich um eine Datei mit Programmoptionen). Möglichkeiten sind mir da genau drei eingefallen:
Möglichkeit a)
Delphi-Quellcode:
function TOptions.CanWrite(ADir: string): Boolean;
var
F: File;
FileName: string;
begin
FileName := IncludeTrailingBackslash(ADir) + 'TestFile_' + DateTimeToStr(Now); // Unwahrscheinlich, dass so ne Datei schon existiert
try
AssignFile(F, FileName);
try
Rewrite(F); // einfach mal erstellen
finally
CloseFile(F);
end;
if FileExists(FileName) then // hat das Erstellen geklappt?
begin
DeleteFile(PChar(FileName)); // Datei wird ja nicht mehr gebraucht
Result := True;
end
else
begin
Result := False;
end;
except
Result := False; // Fehler bein Erstellen
end;
end;
Einfach ne Datei erstellen und gucken, obs geklappt hat.
Vorteil:
- Leicht zu implementieren
Nachteil:
- Sieht irgendwie unprofessionell aus
Möglichleit b)
- Auf
OS prüfen
--> wenn
Win9x: erstmal true
--> wenn
WinNT+: Schreibrechte prüfen
- Dann auf Datenträger prüfen: CD: false, HD: true
Vorteil:
- sieht professioneller aus
Nachteile:
- Viel Quelltext
- Wer weiß, ob ich nicht irgendwas vergessen hab oder sich was mit Vista, WinXP SP3, ... ändert?
Möglichkeit c)
- Auf Dateisystem prüfen:
--> FAT: true
--> NTFS: Schreibrechte prüfen
--> CDFS: false
Vorteil:
- sieht professioneller aus
Nachteile:
- Viel Quelltext
- Was, wenn WinFS(kommt IIRC mit Vista SP1 oder?
) kommt?
- Wer weiß, ob ich nicht irgendwas vergessen hab oder sich was mit Vista, WinXP SP3, ... ändert?
Was würdet ihr machen? a) b) c) oder doch vielleicht Möglichkeit d), die wunderbar funktioniert, keine von-hinten-durch-die-Brust-ins-Auge-Funktion ist und mir nur nicht einfallen will...
mfg
Christian