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.
Assignee Loading
Time tracking Loading