Einzelnen Beitrag anzeigen

r2c2

Registriert seit: 9. Mai 2005
Ort: Nordbaden
925 Beiträge
 
#1

Prüfen, ob man in ein Verzeichnis schreiben kann

  Alt 30. Mär 2006, 12:23
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
Kaum macht man's richtig, schon klappts!
  Mit Zitat antworten Zitat