Thema: Nochmal RPos

Einzelnen Beitrag anzeigen

Willie1

Registriert seit: 28. Mai 2008
536 Beiträge
 
Delphi 10.1 Berlin Starter
 
#1

Nochmal RPos

  Alt 15. Nov 2015, 17:41
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.
  Mit Zitat antworten Zitat