Delphi で使える InStr()
2005年9月2日
VB のInStr() 関数はDelphi にはなく、pos()関数を使わなければならず、これは機能的にInStr()より劣る。ならば、InStr()を自分で作ればよい。
(以下、InStr()のコード)
(以下、InStr()のコード)
//検索関数 InStr
function InStr(start: integer; TextSearched: String; FindThis: String; Compare: integer=0): Integer;
var
i: integer;
TS,FT: string;
begin
if Compare=0 then
begin
TS:=TextSearched;
FT:=FindThis;
end else
begin
TS:=LowerCase(TextSearched);
FT:=LowerCase(FindThis);
end;
i:=pos(FT,copy(TS,start,length(TS)-start+1));
if 0<i then i:=i+start-1;
result:=i;
end;
//逆検索関数 RevInStr
function RevInStr(start: integer; TextSearched: String; FindThis: String; Compare: integer=0): Integer;
var
i,j: integer;
begin
j:=0;
repeat
i:=InStr(j+1,TextSearched,FindThis,Compare);
if (j<=start) and (start<=i) then
break;
j:=i;
until i=0;
result:=j;
end
function InStr(start: integer; TextSearched: String; FindThis: String; Compare: integer=0): Integer;
var
i: integer;
TS,FT: string;
begin
if Compare=0 then
begin
TS:=TextSearched;
FT:=FindThis;
end else
begin
TS:=LowerCase(TextSearched);
FT:=LowerCase(FindThis);
end;
i:=pos(FT,copy(TS,start,length(TS)-start+1));
if 0<i then i:=i+start-1;
result:=i;
end;
//逆検索関数 RevInStr
function RevInStr(start: integer; TextSearched: String; FindThis: String; Compare: integer=0): Integer;
var
i,j: integer;
begin
j:=0;
repeat
i:=InStr(j+1,TextSearched,FindThis,Compare);
if (j<=start) and (start<=i) then
break;
j:=i;
until i=0;
result:=j;
end