… 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;