Result ist nicht immer initialisiert.
return 0;
ist kein
Exit;
, sondern
Result:=0; Exit;
oder
Exit(0);
.
Dann würde ich kein GOTO mehr verwenden, sondern eine Schleife (For/While/Repeat).
Namenloser hat es schon gesagt: GOTO hat kein Ende ... hat nur einen Anfang, nicht so wie
https://en.wikipedia.org/wiki/GOSUB .
Und memchr ist auch falsch, denn XE ist
Unicode und da drin wird mit
Ansi gerechnet.
Ähhh, wo ist fsih definiert?
Und wieso ist das DWORD, wo doch memchr einen Pointer zurück gibt?
Ich würde ja PChar verwenden und die Pointer-Arithmetik ausnutzen, damit "richtig" gerechnet wird. (bei
Unicode jeweils 2 Byte)