On 24.05.2011 17:22, Luis Fernando Del Aguila Mejía wrote:
I know that you can use dynamic arrays (array of). Is better.
But this does not understand and confuse me.
Why to create an array of 3 elements (ANSIString) with GetMem, I have to
put a size of 15 bytes (5*3) and not 12 bytes (4*3).?
The program works with 15 bytes, but do not understand why not work with
12 bytes.
Thanks.

{$codepage utf8}
Var LCad:^ansiString;
Begin
getmem(LCad,5*3); //ansistring is a pointer 4 bytes
LCad[0]:='01234';
LCad[1]:='56789';
LCad[2]:='11111';
Writeln(LCad[2]);
freemem(LCad)
End.

Question out of curiosity:
Is there a reason why you allocate an array "by hand"? Why don't you try this:

var
  LCad: array of AnsiString;
begin
  SetLength(LCad, 3);
  LCad[0] := '01234';
  LCad[1] := '56789';
  LCad[2] := '11111';
  Writeln(LCad[2]);
  SetLength(LCad, 0);
end.

Regards,
Sven
_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal

Reply via email to