我在客户数据集中有一个计算字段,名为完整地址,类型为Memo。
我想连接地址字段,如下所示:
TField* f = customersCDS->FieldByName("full_address");
if(f)
{
f->Value = customersCDS->FieldByName("address_line1")->Value;
f->Value += "\n";
f->Value += customersCDS->FieldByName("address_line2")->Value;
..
}
但是,上述方法不起作用。我收到编译器错误:
E2015 Ambiguity between '_fastcall operator Variant::float() const' and '_fastcall operator Variant::double() const'
最后,我想将计算字段与TMemo绑定,在多行显示完整地址。
答案 0 :(得分:1)
TField::Value
是一个属性。您不能将复合赋值运算符(如+=
)与属性一起使用。您必须单独使用+
和=
,例如:
TField* f = customersCDS->FieldByName("full_address");
if (f)
{
f->Value = customersCDS->FieldByName("address_line1")->Value;
f->Value = f->Value + String("\n");
f->Value = f->Value + customersCDS->FieldByName("address_line2")->Value;
..
}
在这种情况下,最好使用变量:
TField* f = customersCDS->FieldByName("full_address");
if (f)
{
String s = customersCDS->FieldByName("address_line1")->Value;
s += "\n";
s += customersCDS->FieldByName("address_line2")->Value;
//...
f->Value = s;
}