Habe gerade einen,
imho unschönen, Workaround gefunden:
Delphi-Quellcode:
RString = record
private
FValue : Variant;
procedure SetValue(const AVar: Variant),
public
const RecordName = 'RString'; // Name des Records; muss immer manuel angepasst werden :-/
const VarType = varString;
property Value : Variant read FValue write SetValue;
end;
// ---------------------------------
// Wenn ich das nun irgendwo verwende:
var
context : TRttiContext;
typeInfo : TRttiType;
prop : TRttiProperty;
recordName : String
begin
context := TRttiContext.Create();
typeInfo := context.GetType(obj.ClassType);
prop := typeInfo.GetProperty('RecordVar');
recordName := prop.PropertyType.Name); // Liefert z.B. 'RString'
if (recordName = RString.RecordName) then // Hier nun die Prüfung auf den passenden String
ShowMessage('Juhu')
else
ShowMessage('Nicht gut.');
end;
Wenn ich nun RString ändern sollte, so bringt der Compiler einen Fehler, an der Stelle, an der ich dann RString.RecordName verwende. Das ist schon mal etwas besser, da ich dann den String nur einmal ändern muss. Aber so richtig zufrieden bin ich damit immer noch nicht.
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)