2009年9月3日木曜日

TValue型を試してみる

Rttiユニットで新たに定義されたTValue型は、汎用に使えるデータ型に
なっていて、Delphiで使う基本的な型は、Implicit演算子が定義されており
代入可能になっている。

で、実験してみた。以下ソースコード

  1. program Project1;  
  2. {$APPTYPE CONSOLE}  
  3.   
  4. uses  
  5.   SysUtils,  
  6.   rtti,  
  7.   typinfo;  
  8.   
  9. var  
  10.   tv: TValue;  
  11.   obj: TObject;  
  12.   intary: Array of TValue;  
  13.   
  14. begin  
  15.   try  
  16.       { TODO -oUser -cConsole Main : ここにコードを記述してください }  
  17.       // 先ずは何も入れない場合  
  18.       if tv.IsEmpty then  
  19.       begin  
  20.           writeln('TValueはからです');  
  21.       end;  
  22.   
  23.       tv := 100;  
  24.       writeln('TValueは' + tv.TypeInfo.Name + 'です。');  
  25.   
  26.       tv := 100.0;  
  27.       writeln('TValueは' + tv.TypeInfo.Name + 'です。');  
  28.   
  29.       tv := 'saka';  
  30.   
  31.       writeln('TValueは' + tv.TypeInfo.Name + 'です。');  
  32.   
  33.       obj := TObject.Create;  
  34.       tv := obj;  
  35.       writeln('TValueは' + tv.TypeInfo.Name + 'です。');  
  36.   
  37.       tv := obj.ClassType;  
  38.       writeln('TValueは' + tv.TypeInfo.Name + 'です。');  
  39.   
  40.       obj.Free;  
  41.   
  42. end.  


で実行した様子が下図。