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.