Hi,
is there a way how to have dynamic array "inside" another dynamic array?
program project1;
{$mode objfpc}{$H+}
uses
{$IFDEF UNIX}
cthreads,
{$ENDIF}
Classes, SysUtils
{ you can add units after this };
{$R *.res}
type
TDynArray = array of Integer;
PTDynArray = ^TDynArray;
var aArray, aNewArray: TDynArray;
aNewStart: Integer;
begin
SetLength(aArray, 300);
writeln('Length of aArray ', length(aArray));
aNewStart:=100;
aArray[aNewStart+5]:=42;
aNewArray:=@aArray[aNewStart];
aNewArray[5]:=42;
writeln('Length of aNewArray ', length(aNewArray));
end.
So aNewArray begin at aArray[100] and have length=200 and I could write
NewArray[5]:=42; instead of aArray[aNewStart+5]:=42;
After all, memory is allocated correctly.
Code above gives "Invalid pointer operation" while this code
aNewArray:=PTDynArray(@aArray[aNewStart])^;
aNewArray[5]:=42;
gives "Range check error".
Thanks.
_______________________________________________
fpc-pascal maillist - [email protected]
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal