On 2015-02-03 12:30, silvioprog wrote:
On Tue, Feb 3, 2015 at 6:17 AM, Torsten Bonde Christiansen
<t...@epidata.info <mailto:t...@epidata.info>> wrote:
Hi,
What does it take for a class to access a field using
FieldAddress(...)?
I have tried with both typeinfo on/off ({M+}), placing the field
in private/protected/public/published
sections but to no avail.
My simple code is:
TMyObject = class
private
FRef: TMyObject;
procedure SetRef(AValue: TMyObject);
public
property Ref: TMyObject read FRef write SetRef;
end;
then i have tried to get the adress in two ways:
AMyObject.FieldAddress('FRef'); //returns nil
AMyObject.FieldAddress('Ref'); //also returns nil
If i run my code through debugger, the VMT FieldTable is empty
suggesting no information is
created. This happens in all cases of typeinfo on/off and
differenc sections...
What can i do to make the fieldadress accessible?
Regards,
Torsten.
This method return a field address, eg:
{$M+}
TMyObject = class(TObject)
FRef: TMyObject;
end;
...
var
VMyObject: TMyObject;
VRef: Pointer;
begin
VMyObject := TMyObject.Create;
VRef := VMyObject.FieldAddress('FRef');
If you whant to get a property, use the TypInfo.GetObjectProp function.
So FieldAddress can only access published fields?
Regards,
Torsten.
_______________________________________________
fpc-pascal maillist - fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal