… or where is the substring? The old fashioned Pos function is the most common way for searching in a string. But it always begins on the start of the string and so its a little bit useless to search behind the first position of the string.
Lets have a new Pos function to solve this! This function searchs string s1 in s2 and returns the position of it, like the old Pos does. In addition, you can define a start position and a maximum length for to search.
function StrIPos (const s1, s2: string;
pos, max: Integer): Integer;
// s1 = the string that must be found
// s2 = the string to search
// pos = start position
// max = maximum search length
var s, l1, l2, j: Integer;
begin
Result:= -1;
l1:= Length (s1);
l2:= Length (s2);
if max <= 0 then max:= l2; // maximum length
// we can not search before the first char
if pos < 0 then pos:= 0;
// maybe we're ready at all?
if (l1 <= 0) or (pos > max) then Exit;
for s:= pos to (max - l1) do begin
for j:= 1 to l2 do begin
if (s1[j] <> s2[s+j]) then
BREAK; // Diffrence detectet
// we have it found
if (j = l1) then begin Result:= s; Exit; end;
end;
end;
end;