>>813
それでいいのですけれど、普通はS1Indexに2バイト文字を切った位置を渡す方が変なので、
>>814氏の言うように使いみちは限られて来ます。

case SearchDirection of
sdForward:
begin
 i := Index; 
 while i <= EndIndex-Length(SubStr)+1 do
 begin
  if AnsiStringPartsCompare_Base(S, SubStr, i, 1, Length(SubStr)) {←変更ナシ} then
  begin
   Result := i;
   Break;
  end;
  if S[i] in LeadBytes then Inc(i);
  Inc(i);
 end;
end;

の方が普遍的かつ効率的という話。
つーか、フサさんの、SJISなんて理解したく無いので結果教えろ的態度はどうよ?
このスキルが今まで不要だったのならそれはそれでいいけど、
少なくともこの処理には必要なんだからさあ。