Einzelnen Beitrag anzeigen

Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.736 Beiträge
 
Delphi 6 Enterprise
 
#15

AW: Gibts Alternativen zu File-/DirectoryExists?

  Alt 12. Mai 2011, 09:33
Guten morgen zusammen,

hier die vorerst fertige Version (wenn keinem mehr was dran auffällt) was ich ändern sollte.
Hab mir alle Funktionen rund um Pfade und Files in der Hilfe angeschaut. Dies hat zu einem Umbau
der HasExtension-Funktion geführt und der Erkenntnis, dass ich mir das Laufwerk mit ExtractFileDrive aus dem Pfad holen kann, wobei auch im Falles eines UNC-Pfades was brauchbares rauskommt.

Delphi-Quellcode:
unit uCheck;

interface

uses StrUtils, SysUtils;

type
  TFileDirExistsRet = set of (fdeFile, fdeDir, fdeShortDir, fdeLW, fdeUNC);

function FileDirExists( const FileOrDir : string ) : TFileDirExistsRet;
function HasExtension(const Filename : string) : Boolean;

implementation

function HasExtension(const Filename : string) : Boolean;
begin
  if ExtractFileExt(Filename)<>'then Result:=true
  else Result := false;
end;

function IsUNCPath(const Filename : string) : Boolean;
begin
  if Copy(Filename,1,2)='\\then Result:=true
  else Result := false;
end;

function FileDirExists( const FileOrDir : string ) : TFileDirExistsRet;
var
  Path : String;
begin
  Result:=[];
  Path:=ExtractFilePath(FileOrDir);
  if FileExists(FileOrDir) then
    Result:=[fdeFile, fdeDir, fdeShortDir, fdeLW]
  else
    begin
    if HasExtension(FileOrDir) then
      begin
      if DirectoryExists(Path) then
        Result:=[fdeDir, fdeShortDir, fdeLW]
      else
        begin
        if DirectoryExists(ExtractFilepath(Path)) then
          Result:=[fdeShortDir, fdeLW]
        else
          begin
            if DirectoryExists(ExtractFileDrive(FileOrDir)) then
              Result:=[fdeLW]
          end;
        end
      end
    else
      begin
      if DirectoryExists(FileOrDir) then
        Result:=[fdeDir, fdeShortDir, fdeLW]
      else
        begin
        if DirectoryExists(Path) then
          Result:=[fdeShortDir, fdeLW]
        else
          begin
            if DirectoryExists(ExtractFileDrive(FileOrDir)) then
              Result:=[fdeLW]
          end;
        end
      end
    end;

  //Festetllen ob UNC-Pfad
  if IsUNCPath(FileOrDir) then
    Result:=Result+[fdeUNC]
end;

end.
Ralph
  Mit Zitat antworten Zitat