Re: [fpc-pascal] Questions About Constructors

2017-03-31 Thread Sven Barth via fpc-pascal
Am 31.03.2017 19:27 schrieb "African Wild Dog" :
>
> 2017-03-30 4:25 GMT-03:00 Michael Van Canneyt :
>>
>>
>>
>> On Thu, 30 Mar 2017, African Wild Dog wrote:
>>
>>> Hello,
>>>
>>> 1 - What happens if my constructor raise an exception? Is my destructor
>>> automatically called?
>>
>>
>> Yes.
>>
>>>
>>> 2 - Are the class fields automatically initialized to Default(T) just
like
>>> in Delphi?
>>
>>
>> Yes. The're zeroed out when the memory for the class is allocated.
>>
>
> Thanks for the clarification.
> I've issued #0031619  to add these details in the documentation.

Keep in mind however that the second behavior can be changed by overriding
TObject.NewInstance (the default implementation allocates the memory of the
class and zeroes it).

Regards,
Sven
___
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal

Re: [fpc-pascal] Questions About Constructors

2017-03-31 Thread African Wild Dog
2017-03-30 4:25 GMT-03:00 Michael Van Canneyt :

>
>
> On Thu, 30 Mar 2017, African Wild Dog wrote:
>
> Hello,
>>
>> 1 - What happens if my constructor raise an exception? Is my destructor
>> automatically called?
>>
>
> Yes.
>
>
>> 2 - Are the class fields automatically initialized to Default(T) just like
>> in Delphi?
>>
>
> Yes. The're zeroed out when the memory for the class is allocated.
>
>
Thanks for the clarification.
I've issued # 0031619
  to add these details in the
documentation.


Best regards
___
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal

Re: [fpc-pascal] Questions About Constructors

2017-03-30 Thread Michael Van Canneyt



On Thu, 30 Mar 2017, African Wild Dog wrote:


Hello,

1 - What happens if my constructor raise an exception? Is my destructor
automatically called?


Yes.



2 - Are the class fields automatically initialized to Default(T) just like
in Delphi?


Yes. The're zeroed out when the memory for the class is allocated.

Just run the following program. You can add a field and print the contents
in the destructor.

{$mode objfpc} 
{$h+} 
uses sysutils;


Type
  TA = Class(TObject)
constructor create;
destructor destroy; override;
  end;

  Constructor TA.Create;

  begin
Raise Exception.Create('aha');
  end;

  Destructor TA.Destroy;

  begin
writeln('In destructor.');
  end;

var
  A : TA;

begin
  A:=TA.Create;
end.
___
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal

Re: [fpc-pascal] Questions About Constructors

2017-03-30 Thread Mattias Gaertner
On Thu, 30 Mar 2017 03:47:59 -0300
African Wild Dog  wrote:

> Hello,
> 
> 1 - What happens if my constructor raise an exception? Is my destructor
> automatically called?

Yes.
 
> 2 - Are the class fields automatically initialized to Default(T) just like
> in Delphi?

They are all initialized. I'm not sure if Default(T) is always the same
value. I guess yes.

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

[fpc-pascal] Questions About Constructors

2017-03-29 Thread African Wild Dog
Hello,

1 - What happens if my constructor raise an exception? Is my destructor
automatically called?

2 - Are the class fields automatically initialized to Default(T) just like
in Delphi?


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