2016-02-19 4 views
0

У меня есть рассчитанные поля в наборе данных клиента с полным адресом типа Memo.Согласование значений TFields

Я хочу, чтобы сцепить поля адреса, что-то вроде этого:

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, показывая полный адрес на нескольких линиях.

ответ

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; 
} 
Смежные вопросы