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

Reply via email to