Hallo Delphianer,
im Netz gibt es zahlreiche Lösungen für RPos. Eine ist fehlerhaft und andere sind lang und umständlich.
Meine Lösung ist kurz: Voraussetzung keine leeren Strings und Hauptstring- >= Substring-Länge.
Delphi-Quellcode:
function RPos(
const SubStr, Str:
string): Integer;
begin
Result:=0;
if (SubStr <> '
')
and (Length(Str) - Length(SubStr) >= 0)
then
begin
Result:=Length(Str) - Pred(Length(SubStr));
while (Copy(Str, Result, Length(SubStr)) <> SubStr)
and (Result > 0)
do Dec(Result);
end;
end;
Mit PosEx aus StrUtils noch kürzer:
Delphi-Quellcode:
uses StrUtils;
...
function RPos(
const SubStr, Str:
string): Integer;
begin
Result:=0;
if (SubStr <> '
')
and (Length(Str) - Length(SubStr) >= 0)
then
begin
Result:=Length(Str) - Pred(Length(SubStr));
while (PosEx(Substr, Str, Result) = 0)
and (Result > 0)
do Dec(Result);
end;
end;
Frage: Mein Delphi ist betagt, gibt es inzwischen RPos bei Delphi XE ?
Kennt jemand eine
ASM-Lösung, das wäre doch etwas für einen Assembler-Programmierer.
Schönen Sonntag
Willie1.