DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: smallcoder
今日帖子: 30
在线用户: 9
导航: 论坛 -> DELPHI技术 斑竹:liumazi,sephil  
作者:
男 jjwwang (jjwwang) ★☆☆☆☆ -
注册会员
2020/1/8 19:19:39
标题:
delphiXE10.2的小bug 浏览:190
加入我的收藏
楼主:


  TTestObject = class
  private
    FId: Integer;
  public
    property Id: Integer read FId write FId;
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
var
  TestObject: TTestObject;
  LProperty: TRttiProperty;
  V: TValue;
begin
  Caption := '';

  TestObject := TTestObject.Create;
  TestObject.Id := 100;

  for LProperty in TRttiContext.Create.GetType(TTestObject).GetProperties do
  begin
    V := LProperty.GetValue(TestObject);
    Caption := Caption + V.AsString;    //异常,转换失败.
  end;

  TestObject.Free;
end;

不知道新版有无此问题.
----------------------------------------------
学无止境
作者:
男 chencong5025 (Nicosoft) ▲▲△△△ -
注册会员
2020/1/8 20:19:31
1楼: Caption +string( V.AsVariant); 
这样可以不报错

V.AsString;
这样是报 转换错误

XE10.3.3
----------------------------------------------
-
作者:
男 jjwwang (jjwwang) ★☆☆☆☆ -
注册会员
2020/1/8 20:58:46
2楼: 其它类型也有问题,通用办法换成V.ToString解决.
----------------------------------------------
学无止境
作者:
男 iamdream (银河恒久远,梦想无止境!) ★☆☆☆☆ -
大贡献会员
2020/1/8 22:43:28
3楼: 新版本一样。这个应该不是bug,已经明确告诉你Invalid class typecast,说明类型不对,也就是说,AsString只处理类型是string的那些属性,否则就会报转换错。你需要将任何类型转换到字符串,用ToString比较好。
----------------------------------------------
-广袤璀璨的银河,永无止境的梦想(梦无止境游银河) 博客挂了……
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v2.1 版权所有 页面执行7.8125毫秒 RSS