> On Oct 8, 2020, at 4:58 AM, Bo Berglund via fpc-pascal 
> <fpc-pascal@lists.freepascal.org> wrote:
> 
> OK,
> is it possible to define the TMyRecord with default values so that
> when I do Default(TMyRecord) it will be non-zero defaults written
> instead of zeros?

You need to make a method for tha. You can't even use constructors because they 
must have parameters for some reason but you can use a static class function 
(this requires advanced records mode switch of course). There is also an 
initialize operator that is in 3.2.0 I believe.

Sven did say one time that he MAY consider allowing a record initialization 
syntax inside code blocks (see below). That would be a nice option but they 
require all fields to be initialized. Having default values like C++ would be 
best though.

type
 TmyRec = record
   a, b, c: integer;
   d, e: double;
   class function Create: TMyRec; static;  // this syntax works.

   class operator Initialize(var self: TMyRec); // init operator gets called 
when the record is declared
 end;

var
 charlie: TmyRec = (a:2; b:3; e:3.1415);
begin
 charlie := TmyRec(a:2; b:3; e:3.1415); // this would be a nice addition to 
avoid constructors

Regards,
        Ryan Joseph

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

Reply via email to