要するに、検索開始位置を指定できればいいんですよね?
(終了位置は、後からでも切り分けられるから)

function Instr(Start: Integer; const S, Sub: string): Integer;
var
 R: PChar;
begin
 R := AnsiStrPos(PChar(S) + Start - 1, PChar(Sub));
 if R = nil then
  Result := 0
 else
  Result := R - PChar(S) + 1;
end;

文字列途中の#0を気にしないのであれば、これが高速かな?
関数名がBASICのセンスなのも気にしない(w