Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - String rückwärts durchgehen?


Robii - Di 16.06.09 14:32
Titel: String rückwärts durchgehen?
Hey, wie kann ich einen String rückwärts durchgehen, d.h. hinten Anfangen und alles bis zum 1. / in einem neuen String speichern ? Gruß


Gausi - Di 16.06.09 14:35


Delphi-Quelltext
1:
2:
for i := length(myString) downto 1 do
// ...


Robii - Di 16.06.09 14:45


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
var
 i: Integer;
 Pla,Dnu: String;
begin
    for i := length(Pla) downto 1 do
      If Pla[i] <> '\' then DNU := DNU+Pla[i];
end;


Das ist mein Code. Aber jetzt habe ich ja die Zeichen im String DNU genau umgekehrt.
Wie ann ich das denn verhindern?
Gruß


Delete - Di 16.06.09 14:49


Delphi-Quelltext
1:
If Pla[i] <> '\' then DNU := Pla[i] + DNU;                    

Kann man drauf kommen, oder?


Robert.Wachtel - Di 16.06.09 15:01

LastDelimiter existiert... ;)

Damit wird's zum Einzeiler.


Delete - Di 16.06.09 15:06

Es gibt immer mehrere Wege, aber mir ging es jetzt mehr um das Verständnis ;)


Robii - Di 16.06.09 15:22

Stimmt. Peinlich, sorry. Danke nochmal.
Gruß


Xentar - Di 16.06.09 15:30

Man könnte auch einen StringReplace '\' -> '' versuchen


Robert.Wachtel - Di 16.06.09 15:35

user profile iconXentar hat folgendes geschrieben Zum zitierten Posting springen:
Man könnte auch einen StringReplace '\' -> '' versuchen

Na, das würde mich aber mal interessieren... :mrgreen:


Delete - Di 16.06.09 16:16

Mich auch *g*


Robii - Di 16.06.09 16:21

Mich auch, bin für alles, was ich lernen kann dankbar.


Delete - Di 16.06.09 16:29

Geht es eigentlich um Dateinamen, oder hat der Backslash eine andere Bedeutung? Falls Ersteres, versuch es mal mit ExtractFileName.


Robii - Di 16.06.09 16:35

Hab es ja mittlerweile gelöst. Ich wollte den Dateinamen aus einem kompletten Pfad herausfiltern, wobei beides jeweils in Strings abgelegt war. Gruß.


Robert.Wachtel - Di 16.06.09 16:37

user profile iconRobii hat folgendes geschrieben Zum zitierten Posting springen:
Hab es ja mittlerweile gelöst. Ich wollte den Dateinamen aus einem kompletten Pfad herausfiltern, wobei beides jeweils in Strings abgelegt war. Gruß.

Was mal wieder zeigt, dass man ruhig auch mal die eigentliche Problemstellung darlegen darf...


Xentar - Di 16.06.09 16:40

Na toll, das kommt davon, wenn man nur den Code liest, und nicht die eigentliche Frage :autsch:

Der Code hier

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
var
 i: Integer;
 Pla,Dnu: String;
begin
    for i := length(Pla) downto 1 do
      If Pla[i] <> '\' then DNU := Pla[i] + DNU;
end;

macht doch im Moment nichts anderes als

Delphi-Quelltext
1:
Dnu := StringReplace(Pla, '\''');                    

da es keine weitere Abbruchbedingung gibt.
Hab nun aber nachträglich gelesen, dass nur bis zum ersten Vorkommen gearbeitet werden soll - die Abbruchbedingung fehlte im Code, somit ist meine Antwort auch hinfällig *g*

Dafür schmeiß ich nun mal ExtractFileName(); in den Raum


Robii - Di 16.06.09 17:23

Auch die Abbruch Bedinung habe ich schon selbst hinugefügt. Einfach


Delphi-Quelltext
1:
If Pla[i] = '\' then break;                    


Und schon bin ich am Ziel.
Gruß.


Delete - Di 16.06.09 17:59

ExtractFileName hatten wir schon :P