Einzelnen Beitrag anzeigen

Jumpy

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

AW: Gibts Alternativen zu File-/DirectoryExists?

  Alt 11. Mai 2011, 15:49
Mein Feierabendstand für heute .
Will jetzt noch auf Laufwerk testen. Gibts was um das Laufwerk aus einem Pfad zu ziehen? Kann ich notfalls auch selber bauen, indem ich nach dem Doppelpunkt suche, denk ich mal.
Vorausgesetzt es ist kein UNC Pfad. Was mach ich aber dann? Woher weiß ich wo bei einem UNC Pfad das "Laufwerk" aufhört und die Verzeichnisse anfangen?

"\\server_abc\farm_2\Reports\Kundenname\2010_1 2"
ist gleich / kann gleich sein
"R:\Kundenname\2010_12"

Delphi-Quellcode:
unit uCheck;

interface

uses StrUtils, SysUtils;

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

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

implementation

function HasExtension(const Filename : string) : Boolean;
begin
  if Pos('.',Filename)>0 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
            //Laufwerk prüfen, was wenn UNC?
          end;
        end
      end
    else
      begin
      if DirectoryExists(FileOrDir) then
        Result:=[fdeDir, fdeShortDir, fdeLW]
      else
        begin
        if DirectoryExists(Path) then
          Result:=[fdeShortDir, fdeLW]
        else
          begin
            //Laufwerk prüfen, was wenn UNC?
          end;
        end
      end
    end;
end;

end.
Ralph
  Mit Zitat antworten Zitat