![]() |
Stringroutine gesucht
Hallo Ihr,
Anfängerfrage: Gibts in Delphi keine Routine, die mir das letzte Vorkommen eines gesuchten Zeichens in einem String ermittelt und mir den Reststring oder die Position zurückliefert? Also sowas wie die Funktion ![]() Wäre toll wenn jemand mir da weiterhelfen könnte! Viele Grüße, RolfPolf |
Re: Stringroutine gesucht
Pos?
Dust Signs |
Re: Stringroutine gesucht
Zitat:
|
Re: Stringroutine gesucht
StrScan()+1 liefert dir den Reststring bezüglich des ersten Vorkommens.
Aber den Ordener kannst du mit ExtractFilePath aus einem Dateinamen extrahieren. |
Re: Stringroutine gesucht
ExtractFileDir() liefert übrigens den Ordner - ohne terminierenden Backslash.
Grüße vom marabu |
Re: Stringroutine gesucht
Wobei du dir sowas auch sehr einfach selbst bauen kannst.
in speziel deinem Fall macht es keinen sinn da du ja echt nur Extractfilepath brauchst. Generell ist ein Pos aber nicht schwer zu implementieren. Versuche das hier grad mal.
Delphi-Quellcode:
Function PosRueckwaerts(Const Substring, s: String): integer; Var x, y: Integer; b: boolean; Begin result := 0; // Falls wir den Substring gar nicht finden If Length(s) <> 0 Then // Standart Fehler Abfangen If Length(Substring) <> 0 Then // Standart Fehler Abfangen If Length(s) >= length(substring) Then Begin // Standart Fehler Abfangen x := length(s) - Length(substring) + 1; // Die MAximal hinterste Position in s berechnen While x > 0 Do Begin // Wir suchen erst mal nur nach den 1. Zeichen ob die stimmen If s[x] = Substring[1] Then Begin // Wenn die Stimmen dann schauen wir nach ob der Rest stimmt b := true; // initialisieren y := 2; // Wir haben das 1. Zeichen schon verglichen, deswegen braucehn wir erst mit 2 beginnen While (y <= Length(Substring)) And (b) Do Begin // Wenn wir wissen das es nicht mehr passt können wir abbrechen If s[x + y - 1] <> Substring[y] Then b := false;// Feststellen ob es passt inc(y);// Weiterzählen nicht vergessen End; If b Then Begin// Wenn wir die Position gefunden haben brechen wir alles ab. result := x; exit; End; End; dec(x);// Weiterzählen nicht vergessen. End; End; End; Procedure TForm1.Button1Click(Sender: TObject); Begin showmessage(inttostr(PosRueckwaerts('l', 'Hallo Welt'))); End; |
Re: Stringroutine gesucht
Vielen Dank an alle,
habt mir sehr weitergeholfen! Grüße, RolfPolf |
Re: Stringroutine gesucht
Hi,
und wenn es sich um ein einzelnes Zeichen handelt gibt es noch
Delphi-Quellcode:
so macht es ExtractFilePath übrigens auch.. steht in Sysutils.
i := LastDelimiter('\', filename);
Gruss Thomas |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:30 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz