[fpc-pascal] assigning ansistring with shortstring

Jonas Maebe jonas.maebe at elis.ugent.be
Fri May 26 18:45:54 CEST 2006


On 26 May 2006, at 14:10, L505 wrote:

> I'm lacking some memory concept here. Below program doesn't work  
> unless setlengths
> are called first on the shortstrings.
>
> program Project1;
>
> {$mode objfpc}{$H+}
>
> var
>   filename: string;
>   last3: string[3];
>   last4: string[4];
> begin
>   filename:= 'test';
>   filename:= filename+ 'ing.pas';
>   setlength(last3, 3);
>   last3[1]:= filename[length(filename)-2];
>   last3[2]:= filename[length(filename)-1];
>   last3[3]:= filename[length(filename)];
>   writeln('debug last3: ' + last3);

The length bytes of those shortstrings aren't initialised if you  
don't do setlength(). It has nothing to do with memory allocation,  
but with initialisation.


Jonas



More information about the fpc-pascal mailing list