[fpc-pascal] Errors using Extended Class Syntax

Jonas Maebe jonas.maebe at elis.ugent.be
Sat Nov 24 18:06:27 CET 2012


On 24 Nov 2012, at 17:55, bsquared wrote:

> I followed the example on the wiki page, but the compiler disallowed both of the following attempts.

On which wiki page did you find this code?

> {$mode objfpc}{$H+}
> 
> TExample1 = class
> private
>  const
>    CN_CONST = 'EXAMPLE CONSTANT';
> published
>  property Example: string
>    read CN_CONST;
> end;
> 
> Error: Unknown class field or method identifier "CN_WELCOME"

Properties can only read via methods or fields, not via constants. A constant is not the same as a field. Does Delphi allow the above?

> TExample2 = class
> private
>  fExample: string;
>  const
>    CN_CONST = 'EXAMPLE CONSTANT';
> published
>  property Example: string
>    read fExample
>    write fExample
>    default CN_CONST;
> end;
> 
> Error: Property can't have a default value

Properties that return strings cannot have a default value. Only immediate values that moreover fit in 32 bits can be used as default value, due to the format of the RTTI. See http://bugs.freepascal.org/view.php?id=19199 for more information.

> Also, What is the static keyword on the class method?
> class procedure SetSomeClassVar(const AValue: TSomeType); static;

It results in the class method not getting a hidden "self" parameter, which otherwise contains the class reference on which the class method was invoked.


Jonas


More information about the fpc-pascal mailing list