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