function ParentPath(const Path: string): string;
begin
Result := ExtractFilePath(ExcludeTrailingPathDelimiter(Path));
if Result = '' then begin
Result := Path;
end;
end;
var
// s: string = '/Music/Disco/Boney M/';
s: string = 'c:\Music\Disco\Boney M\';
begin
WriteLn(s);
s := ParentPath(s);
WriteLn(s);
s := ParentPath(s);
// usw.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Ich würde den String mit split in ein StringArray schreiben und über Index auf die einzelnen Verzeichnisse zugreifen.
s.Split([pathdelim])[0] sollten dann root sein.
h-elsner hat geschrieben: Fr 5. Jul 2024, 19:38
Ich würde den String mit split in ein StringArray schreiben und über Index auf die einzelnen Verzeichnisse zugreifen.
s.Split([pathdelim])[0] sollten dann root sein.
Achtung. In Windows würde dann für "c:\Windows" root als "c:" identifiziert. Und auch bei Linux mit "/home/user" wäre root ein Leerstring.
Mathias hat geschrieben: Fr 5. Jul 2024, 17:37
Gibt es dafür etwas eleganteres oder gar eine fertige Funktion ?
In 3.2.3 oder 3.3.1 kannst du in der Unit System.IOUtils die Klassenmethode TDirectory.GetParent nutzen. Oder alternativ kannst du dessen Implementierung auch selbst nutzen:
PascalDragon hat geschrieben: So 7. Jul 2024, 22:43
Mathias hat geschrieben: Fr 5. Jul 2024, 17:37
Gibt es dafür etwas eleganteres oder gar eine fertige Funktion ?
In 3.2.3 oder 3.3.1 kannst du in der Unit System.IOUtils die Klassenmethode TDirectory.GetParent nutzen. Oder alternativ kannst du dessen Implementierung auch selbst nutzen: