I have a procedure that loads the properties of a class into a memo:
procedure TForm1.GetProperties (p_Class: TClass);
var
v_Context: TRttiContext;
v_Type: TRttiType;
v_Property: TRttiProperty;
begin
v_Type := v_Context.GetType(p_Class);
for v_Property in v_Type.GetProperties do
Memo1.Lines.Add(v_Property.ToString);
end;
Sample Usage
GetProperties(TFDPhysPGConnectionDefParams);
I would like a procedure to get the properties by class name instead of a class.
procedure TForm1.GetPropertiesByClassName (p_ClassName: String); // Changed
var
v_Class: TClass; // Added
v_Context: TRttiContext;
v_Type: TRttiType;
v_Property: TRttiProperty;
begin
v_Class := GetClass(p_ClassName); // Access Violation Exception
v_Type := v_Context.GetType(v_Class);
for v_Property in v_Type.GetProperties do
Memo1.Lines.Add(v_Property.ToString);
end;
Sample Usage:
v_FDConnection := TFDConnection.Create(nil);
try
v_FDConnection.DriverName := 'PG';
GetPropertiesByClassName(v_FDConnection.Params.ClassName);
finally
v_FDConnection.Free;
end;
My attempt as shown above results in a runtime exception for Access Violation.
How can I get this to work?