Nicht unbedingt das Schellste, aber es läuft zuverlässig:
Delphi-Quellcode:
var
SL: TStringList;
S, S2: String;
B: Boolean;
i: Integer;
begin
// input: SL
// output: S
S := SL[0] + '\';
repeat
S2 := S;
S := ExtractFilePath(ExtractFileDir(S));
if S = S2 then
begin
S := '';
Break;
end;
B := True;
for i := 1 to SL.Count - 1 do
begin
if Pos(S, SL[i]) = 0 then
begin
B := False;
Break;
end;
end;
until B;
ShowMessage(S);