Siehe Kommentare im Code:
Delphi-Quellcode:
function gibletztenOrdner(komplett: String): String; // es muss der ganze Pfad mit Dateiname übergeben werden
var //
Teilstring: String;
p1: integer;
p2: integer;
c: integer;
i: integer;
Ergebnis: String;
begin
{
'c:\test\Gruppe1\Datei.txt'
p_2-letzter Backslash
p_1-vorletzter Backslash
|---c---|
}
for i := 0 to length(komplett) - 1 do begin
p1 := pos('\',komplett); // liefert vorletzten Backslash
// Da du immer den gesamten String überprüfst, wirst du immer den ERSTEN Backslah finden (DevilsCamp)
// Kleiner Tip: Gehe die Schleife von Length(komplett) bis 1 runter und Prüfe, ob komplett[i]='\'. Sicher dann die Position des zweiten '\'
//hier fehlt noch was...
end;
p2 := pos('\' + extractfilename(komplett),komplett); // liefert letzten Backslash
// Das liefert tatsächlich die Position des letzten Backslashs (DevilsCamp)
c := p2 - P1;
Ergebnis := copy(komplett,p1,c);
// Hier würde das vorletzte \ mit im Ergebnis stehen. Wenn dies aber mit im Ergebnis sein soll, dann ist es richtig (DevilsCamp)
result := Ergebnis;
end;
So wie der Code geschrieben wurde, bekommst du immer den String, der zwischen dem ersten und dem letzten Backslash steht (inkl. dem ersten Backslash)