[fpc-pascal] with in classes/records

Ryan Joseph ryan at thealchemistguild.com
Fri Oct 5 07:03:05 CEST 2018



> On Oct 4, 2018, at 9:19 PM, Michael Van Canneyt <michael at freepascal.org> wrote:
> 
> And was this not the whole idea of introducing a default property in the first place ?

It is but I just wanted to make sure that this particular ambiguity with initializing classes wasn’t concerning for anyone. 

So far I’ve identified 2 instances where the default needs to be ignored:

1) Assigning the same type i.e. during copies for records or init’ing classes
2) When passing into functions (like in writeln below we need to specify the default property so we don’t try to write the actual class)

Just making sure this is ok.

type
	TWrapper = class
		m_value: integer;
		property value: integer read m_value write m_value; default;
	end;

var
	wrapper: TWrapper;
	i: integer;
begin
	wrapper := TWrapper.Create;
	wrapper := 100;
	wrapper := wrapper + 1;
	writeln(wrapper.value);
	i := wrapper; // error, this passes the class TWrapper
end.

Regards,
	Ryan Joseph




More information about the fpc-pascal mailing list