[fpc-pascal] getmem
Jürgen Hestermann
juergen.hestermann at gmx.de
Tue May 24 18:31:11 CEST 2011
Luis Fernando Del Aguila Mejía schrieb:
> Var LCad:^ansiString;
AnsiString is already a pointer. LCad is now a pointer to a pointer.
That should read
Var LCad: AnsiString;
> getmem(LCad,5*3); //ansistring is a pointer 4 bytes
The memory allocation and freeing is done by the compiler automatically.
Just assign a string or set a length with SetLength. There is no need to
use getmen or new for AnsiStrings.
> LCad[0]:='01234';
What should LCad[0] mean? LCad is not an array. You declared it as a
pointer. If you declared LCad as AnsiString then you can write LCad[1]
(which is the first character of the string) because Free Pascal does an
automatic derefferencing of the AnsiString pointer but you cannot write
LCad[0] because there is no character before the first one. Indexes of
AnsiStrings are not zero-based.
> freemem(LCad)
>
Again: No need to free memory for AnsiStrings. It's done automatically.
More information about the fpc-pascal
mailing list