If you setlength() array to 0, then length() should tell you 0 aswell. Fillchar() modifies data inside, does not and should not affect array length. Dynamic array such as string is good example for fillchar
procedure TForm1.FormCreate(Sender: TObject);
var s: string;
begin
setlength(s, 10);
fillchar(s[1], 10, '-'); // Makes s = '----------'
caption:=s;
end;