Fix in stringl.inc is needed: (integer|longint) -> SizeInt, in n places
This demo fails because of integer|longint string index:
{$mode objfpc} {$longstrings on}
uses
Classes;
function Test(NameLen: SizeInt): boolean;
var
L: TStringList;
s5, s3, sName: string;
begin
L := TStringList.Create;
L.Options := L.Options - [soUseLocale];
L.Add('aa0=9');
s5 := '';
SetLength(s5, NameLen+2);
FillChar(pointer(s5)^, NameLen, 'a');
s5[NameLen] := '5';
s5[NameLen+1] := '=';
s5[NameLen+2] := '6';
L.Add(s5);
s3 := '';
SetLength(s3, NameLen+2);
FillChar(pointer(s3)^, NameLen, 'a');
s3[NameLen] := '3';
s3[NameLen+1] := '=';
s3[NameLen+2] := '4';
L.Add(s3);
///////
sName := '';
SetLength(sName, NameLen);
FillChar(pointer(sName)^, length(sName), 'a');
sName[NameLen] := '5';
///////
L.Sorted:= true;
Result:= L.IndexOfName(sName)=2;
{
writeln('sName: ', sName);
writeln('s3: ', s3);
writeln('s5: ', s5);
}
L.Free;
end;
begin
if not Test(3) then
Writeln('NameLen=3 failed');
if not Test(MaxInt+5) then
Writeln('NameLen=MaxInt+5 failed');
end.