C++生成器 - 无法从 'AnsiString' 转换为 'TObject'



我在将字符串变量转换为TObject时遇到问题。

我有一个查询,它向我返回两列。在第一列中,我有varchar转换为字符串的值,在第二列中,我有int值。

我想用这些值以这种方式填充组合框:

cbx1-> AddItem (DataSet1->DataSet->Fields->Field[0]->AsString, (TObject *) (int) DataSet1->DataSet->Fields->Field[1];

当我提到第二个值是 int 类型时,我收到一些灌木丛,例如 xD 等。

通过尝试将此值转换为字符串,例如:

String temp = IntToStr (DataSet1->DataSet->Fields->Field[1]);
cbx1-> AddItem (DataSet1->DataSet->Fields->Field[0]->AsString, (TObject *) temp;

我收到一条错误消息:

无法从"AnsiString"转换为"TObject">

我不知道我还能做些什么来转换这个值。

不能将AnsiString强制转换为TObject*指针。 只能将整数值或指针值强制转换为TObject*指针。AnsiString都不是。

无论如何,您都没有从第二个字段中正确检索intField[1]是指向Fields集合中实际TField对象的指针。 该指针是您尝试存储在 ComboBox 中的内容,而不是TField表示的int

您需要调用Fields[1]->AsInteger来获取第二个字段的int值,类似于使用Fields[0]->AsString获取第一个字段的字符串值的方式:

cbx1->AddItem(
DataSet1->DataSet->Fields->Field[0]->AsString,
(TObject*) DataSet1->DataSet->Fields->Field[1]->AsInteger
// in C++, using reinterpret_cast is preferred over C-style casting:
// reinterpret_cast<TObject*>(DataSet1->DataSet->Fields->Field[1]->AsInteger)
);

这与上一个问题中的代码没有什么不同:

cbx1->AddItem("one",(TObject*)1);

现在,您只需将文本与等效类型的运行时变量放在"one"1

相关内容

  • 没有找到相关文章

最新更新