Hello,

I'm stuck. I always getting weird error when executing this code (stripped down 
to minimum):

program project1;

type
  TElement = record
      strr: String;
  end;
  TList = array of TElement;
  Plist = ^TList;

  TSetting = record
      list: Plist;
  end;

const
  _List: array [0..1] of TElement = (
      (strr: 'a'),
      (strr: 'b'));

  _Settings: array [0..0] of TSetting = (
      (list: @_List));

procedure Display(a: TList);
begin // <-------------------------------- line 23
    writeln(' +++  ', a[0].strr);
end;

var
  setting: TSetting;
begin
    setting := _Settings[0];
writeln(' ----  ', Assigned(setting.list), '  ', Length(setting.list^));
    Display(setting.list^);

end.


In console I get:

 ----  TRUE  2
Runtime error 216 at $0000000000400BD5
  $0000000000400BD5  INCLOCKED
  $0000000000400216  DISPLAY,  line 23 of project1.lpr
  $0000000000400360  main,  line 32 of project1.lpr
  $000000000042BE00  SYSENTRY,  line 129 of system.pp
  $00000000004001D2


Why I getting that error? Something wrong with records and constant 
initialization?

My system is: Linux 4.13.0-39-generic #44-Ubuntu SMP Thu Apr 5 14:25:01 UTC 
2018 x86_64 x86_64 x86_64 GNU/Linux
FPC (from SVN): 3.1.1 [2018/02/21] for x86_64

--
  Valdas Jankūnas
--
_______________________________________________
Lazarus mailing list
Lazarus@lists.lazarus-ide.org
https://lists.lazarus-ide.org/listinfo/lazarus

Reply via email to