On Sun, 22 Feb 2015, Bart wrote:

Hi,

I cannot find it in the docs (probably not looking in the right place).

Which variables/class-fields are initialized by the compiler?

My understanding is that:
- global vars are initialized (zero, false, empty string etc)
- local vars are not

But what about class fields?

Typically I do

type
 TA = Class
 private
   FInt: Integer;
   FBool: Boolean;
   FString: String;
   FPoint: TPoint;
  ....
  end;

constructor TA.Create;
begin
 FInt:=0;
 FBool:=False;;
 FString:='';
 FPoint:=Point(0,0);
 ...
end;

1. Is this necessary, and if not, for which types can it be omitted?
(skip if you know 2)

It is not necessary. When a class is created, it's memory is zeroed out.

2. Where is it documented?

Good point. I looked for it, and it is not documented. I guess this should be added to section 6.1, will do so.

3. Does it work the same as in Delphi?

Yes.

Michael.
_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal

Reply via email to