任何資料型別中 rtti 中都有對應的獲取資訊的類, 有序型別對應的是 trttiordinaltype.
unit unit1;
inte***ce
uses
windows, messages, sysutils, variants, classes, graphics, controls, forms,
dialogs, stdctrls;
type
tform1 = class(tform)
memo1: tmemo;
button1: tbutton;
procedure button1click(sender: tobject);
end;
var
form1: tform1;
implementation
uses rtti;
procedure tform1.button1click(sender: tobject);
var
t: trttiordinaltype;
begin
memo1.clear;
//先從型別名獲取型別資訊物件
t := trtticontext.create.gettype(typeinfo(byte)) as trttiordinaltype;
memo1.lines.add(format('%s - %s', [t.name, t.qualifiedname]));
memo1.lines.add(format('size: %d', [t.typesize]));
memo1.lines.add('qualifiedname: ' + t.qualifiedname);
memo1.lines.add(format('min,max: %d , %d', [t.minvalue, t.maxvalue]));
memo1.lines.add(emptystr); //空字串
//可以用 asordinal 方法代替前面的 as trttiordinaltype
t := trtticontext.create.gettype(typeinfo(word)).asordinal;
memo1.lines.add(format('%s: %s', [t.name, t.qualifiedname]));
memo1.lines.add(format('size: %d', [t.typesize]));
memo1.lines.add(format('min,max: %d , %d', [t.minvalue, t.maxvalue]));
memo1.lines.add(emptystr);
//也可以直接強制轉換
t := trttiordinaltype(trtticontext.create.gettype(typeinfo(integer)));
memo1.lines.add(format('%s: %s', [t.name, t.qualifiedname]));
memo1.lines.add(format('size: %d', [t.typesize]));
memo1.lines.add(format('min,max: %d , %d', [t.minvalue, t.maxvalue]));
memo1.lines.add(emptystr);
end;
end.
Rtti 單元 4 獲取結構的資訊
下面以 tpoint 為例,用 trttirecordtype 讀取了結構的資訊.unit unit1 inte ce uses windows,messages,sysutils,variants,classes,graphics,controls,forms,dialogs,stdctrls t...
Rtti單元 1 獲取類的方法 屬性 欄位的列表
通過 rtti 單元的 trtticontext 是個 record 可以方便地獲取類的方法 屬性 欄位的列表.unit unit1 inte ce uses windows,messages,sysutils,variants,classes,graphics,controls,forms,dia...
Rtti單元 1 獲取類的方法 屬性 欄位的列表
通過 rtti 單元的 trtticontext 是個 record 可以方便地獲取類的方法 屬性 欄位的列表.unit unit1 inte ce uses windows,messages,sysutils,variants,classes,graphics,controls,forms,dia...