Re: [fpc-pascal] Parameterless constructors are not allowed in records or record/type helpers
Thanks got it now. Not ideal but it works and is a small improvement over a function. > On Feb 6, 2017, at 2:06 PM, Sven Barthwrote: > > You need to add the "static" modifier to the method. Class functions in > records can't have a self parameter and the "static" disables that. That's > why. > > Regards, Ryan Joseph ___ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
Re: [fpc-pascal] Parameterless constructors are not allowed in records or record/type helpers
Am 06.02.2017 02:37 schrieb "Ryan Joseph": > > I tried class functions in records already but I got the error "Class methods must be static in records”. Not sure what that means but I assumed they don’t work either. You need to add the "static" modifier to the method. Class functions in records can't have a self parameter and the "static" disables that. That's why. Regards, Sven ___ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
Re: [fpc-pascal] Parameterless constructors are not allowed in records or record/type helpers
I tried class functions in records already but I got the error "Class methods must be static in records”. Not sure what that means but I assumed they don’t work either. Too bad, that would be a nice feature. > On Feb 6, 2017, at 2:29 AM, Sven Barthwrote: > > Oh, well, it was worth a shot... Alternatively you could declare a class > function named Create that returns an instance of the record. Even Delphi is > using that for Rtti.TRttiContext. Regards, Ryan Joseph ___ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
Re: [fpc-pascal] Parameterless constructors are not allowed in records or record/type helpers
Am 05.02.2017 15:04 schrieb "Ryan Joseph": > > I never knew Pascal had default parameters, a feature I always use and enjoy in PHP. Once again I learn something new about the language I use. :) I suggest you to read through the language reference guide then ;) > However, the constructor with default params does not work. I get the same error as before. {$modeswitch advancedrecords} is on. Oh, well, it was worth a shot... Alternatively you could declare a class function named Create that returns an instance of the record. Even Delphi is using that for Rtti.TRttiContext. Regards, Sven ___ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
Re: [fpc-pascal] Parameterless constructors are not allowed in records or record/type helpers
2017-02-05 14:34 GMT+01:00 Ryan Joseph: > However, the constructor with default params does not work. I get the same > error as before. {$modeswitch advancedrecords} is on. > > type > MyRecord = record > x: integer; > constructor Foo (_x: integer = 0); > end; > AFAIK this is by design. In theory "constructor Create;" is reserved for record "Initializers" (which means initialization for managed fields of record). Parameter less constructor doesn't have much sense for records. Use "class function Foo: MyRecord ;" instead. Probably syntax "constructor Create;" will be used for record initializers in next Delphi releases (around 2018?). In FPC we have implemented this feature (not merged yet : http://bugs.freepascal.org/view.php?id=30687 ) but as "class operator Initialize(var a: MyRecord);". -- Best regards, Maciej Izak ___ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
Re: [fpc-pascal] Parameterless constructors are not allowed in records or record/type helpers
I never knew Pascal had default parameters, a feature I always use and enjoy in PHP. Once again I learn something new about the language I use. :) However, the constructor with default params does not work. I get the same error as before. {$modeswitch advancedrecords} is on. type MyRecord = record x: integer; constructor Foo (_x: integer = 0); end; > On Feb 5, 2017, at 8:29 PM, Sven Barthwrote: > > See here at the bottom: > http://freepascal.org/docs-html/current/ref/refsu65.html#x176-19800014.4.1 > (it's the same for any kind of routine: function, procedure, method, > constructor...) Regards, Ryan Joseph ___ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
Re: [fpc-pascal] Parameterless constructors are not allowed in records or record/type helpers
Am 05.02.2017 09:39 schrieb "Ryan Joseph": > > > > On Feb 5, 2017, at 3:27 PM, Sven Barth wrote: > > > > constructor with a default parameter. > > How? never heard of this. Thanks. See here at the bottom: http://freepascal.org/docs-html/current/ref/refsu65.html#x176-19800014.4.1 (it's the same for any kind of routine: function, procedure, method, constructor...) Regards, Sven ___ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
Re: [fpc-pascal] Parameterless constructors are not allowed in records or record/type helpers
> On Feb 5, 2017, at 3:27 PM, Sven Barthwrote: > > constructor with a default parameter. How? never heard of this. Thanks. Regards, Ryan Joseph ___ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
Re: [fpc-pascal] Parameterless constructors are not allowed in records or record/type helpers
Am 05.02.2017 09:13 schrieb "Ryan Joseph": > > Why is this restriction in place and what are the alternatives if any? Some times I want to just provide a method that sets default values for a record without any parameters but FPC doesn’t let me for some reason. Delphi compatibility. As a workaround you could add a constructor with a default parameter. Regards, Sven ___ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
[fpc-pascal] Parameterless constructors are not allowed in records or record/type helpers
Why is this restriction in place and what are the alternatives if any? Some times I want to just provide a method that sets default values for a record without any parameters but FPC doesn’t let me for some reason. Regards, Ryan Joseph ___ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal