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.
_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal

Reply via email to