Hi,
This is a odd one (at least for me and another developer in tiOPF project). Why is RTTI information ALWAYS available?
See the example project below. It always returns that RTTI information is available when clearly it should not.
Kylix 3 help says that ClassInfo property should return nil if no RTTI is available. Tested with FPC 2.4.0-rc1, the test project below always prints that RTTI is available - which is wrong.
-------------------------------------------
program TestProject;
{$MODE objfpc}{$H+}
var
TestObject: TObject;
function tiHasRTTI(AClass: TClass): Boolean;
var
lClassInfo: Pointer;
begin
lClassInfo := AClass.ClassInfo;
Result := lClassInfo nil;
end;
function tiHasRTTI(AObject: TObject): Boolean;
var
lClass: TClass;
begin
lClass := AObject.ClassType;
Result := tiHasRTTI(lClass);
end;
begin
TestObject := TObject.Create;
if tiHasRTTI(TObject) then
WriteLn('Class with RTTI.') // always true???
else
WriteLn('Class without RTTI');
if tiHasRTTI(TestObject) then
WriteLn('Object with RTTI.') // always true???
else
WriteLn('Object without RTTI');
WriteLn;
WriteLn('Press enter to exit.');
ReadLn;
TestObject.Free;
end.
--------------------------------------------Regards,
- Graeme -
