El 29/04/2018 a las 19:38, Vojtěch Čihák via Lazarus escribió: > > Hi, > > > > I changed line 7: > > > > TElement = record > > strr: String; > > end; > > TList = array[0..1] of TElement; //HERE > > Plist = ^TList; > > > > and demo works. Simply, static and dynamic arrays are not the same. > > AFAIR, dynamic array is just pointer while static array are data. > > I guess someone else will give you more detailed answer. >
Yes, but I think that it should be considered a FPC bug 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)); // <=== This line should rise a compiler error. You are asigning a pointer to an static array to a pointer to a dynamic array. ------------------- You could add a type cast of the pointer to Plist _Settings: array [0..0] of TSetting = ( (list: Plist(@_List) )); You explicitly tell the complier to bypass type check, it is up to deal with this potential dangerous > > > V. > > ______________________________________________________________ > > Od: Valdas Jankūnas via Lazarus > > Komu: Lazarus@lists.lazarus-ide.org > > Datum: 29.04.2018 18:16 > > Předmět: [Lazarus] Runtime error: INCLOCKED > > > > > type > TElement = record > strr: String; > end; > TList = array of TElement; > Plist = ^TList; > ..... > > 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 > > -- Saludos Santiago A.
-- _______________________________________________ Lazarus mailing list Lazarus@lists.lazarus-ide.org https://lists.lazarus-ide.org/listinfo/lazarus