Thema: Delphi Pfade vegleichen...

Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#10

Re: Pfade vegleichen...

  Alt 25. Mär 2007, 15:02
Auch nich getestet, aber ich glaub so in etwa hatte ich das geleöst.
Funktioniert auch mit relativen Pfaden,
nicht mit UNC-Namen und auch nicht mit den eigebetteten NTFS-Laufwerken/Netzwerkfreigaben).
Und dann fehlt hier auch noch der Teil für die 8.3-Dateinamen, also die langen/kurzen Nmen wie "abcdefghijklm.nop" <> "abcdef~1.nop".
Delphi-Quellcode:
Function PathIncluded(Check, MainDir: String): Boolean;
  Var i: Integer;

  Begin
    Result := False;
    Check := AnsiLowerCase(ExpandUNCFileName(ExcludeTrailingBackslash(Check)));
    MainDir := AnsiLowerCase(ExpandUNCFileName(ExcludeTrailingBackslash(MainDir)));
    i := Min(Length(Check), Length(MainDir));
    If Length(Check) <= i Then Exit;
    Result := (Check = Copy(MainDir, 1, i))
      and ((Length(MainDir) = i) or (MainDir[i + 1] = '\'));
  End;


s1 := 'C:\Test\T1';
s2 := 'C:\Test\T1\Z';
If PathIncluded(s2, s1) Then ...

[add]
stimmt, ExpandUNCFileName gab's ja och noch ... hatte nur noch ExpandFileName im Kopf.

@bigg:
bei dir wäre ein IncludeTrailingBackslash nicht schlecht, denn wenn mal keiner in s2 drin ist, dann gibt's da Probleme

Bei Diesem wird sonst auch TRUE gesagt:
Delphi-Quellcode:
s1: "C:\test\abc" // langer Pfad
s2: "C:\test\a" // kurzer Pfad
$2B or not $2B
  Mit Zitat antworten Zitat