Einzelnen Beitrag anzeigen

Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#10

AW: Delemiter > Char

  Alt 25. Okt 2017, 22:41
Bezüglich des Operators ansich hast du Recht:
  • ++i ist der Pre-increment-Operator, der zuerst inkrementiert, bevor er die Variable verwendet. Wenn i = 0 , dann steht nach x = ++i die Zahl 1 in x .
  • i++ ist der Post-increment-Operator, der erst inkrementiert, nachdem er die Variable verwendet. Wenn i = 0 , dann steht nach x = i++ die Zahl 0 in x .
In beiden Fällen ist i nach der Ausführung 1 .

Dein Originalcode hat dennoch auf Pattern[-1] zugegriffen, was im Zweifelsfalle eine Zugriffsverletzung darstellt.

1 zu 1 übersetzt sollte die Funktion ca. so aussehen (mit der PWideChar zu PAnsiChar Änderung):
Delphi-Quellcode:
function tcsstr(Str, Pattern: PAnsiChar): PAnsiChar;
var
  I: Integer;
begin
  Assert(Assigned(Str) and Assigned(Pattern));
  I := 0;
  while (Pattern[I] <> #0) do
  begin
    if (Str[I] = #0) then
    begin
      Exit(nil);
    end;
    if (Str[I] <> Pattern[I]) then
    begin
      Inc(Str);
      I := -1;
    end;
    Inc(I);
  end;
  Result := Str;
end;
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)

Geändert von Zacherl (25. Okt 2017 um 22:54 Uhr)
  Mit Zitat antworten Zitat