2010中的两个问题
我程序里的一个button click中的代码如下
String delete_string;
String confirm_message;
if (ADOQuery1->RecordCount!=0)
{
confirm_message = "你确定要删除用户" + ADOQuery1->FieldByName("user_id")->AsString + "吗?";
if (MessageBox(this->Handle, confirm_message.c_str(), "删除用户", 1)==1)
{
...
以上代码在2009里面跑的很正常,到2010里面遇到两个问题:
1. 编译出错,在红色字段“wanted 'const char *', got 'wchar_t *'”;
2. 我在2010的环境中发现"ADOQuery1->"之后没法找到FieldByName()这个函数。
不知道这是09到10后的变化引起的还是有什么其他情况,请大家帮忙看看,谢谢。
唔萨,回家吃饭先~
[解决办法]
1.2010中的String已定义成WideString,所以出错,两个解决方案:
1)改 String confirm_message;为AnsiString confirm_message;
2) 改
if (MessageBox(this->Handle, confirm_message.c_str(), "删除用户", 1)==1)
为
if (MessageBox(this->Handle, confirm_message.t_str(), "删除用户", 1)==1)
本人建议用第1)方案,因为它在老版本中同样可用
2.我的2010没此问题,BCB的代码提示有时的确不是很好,如你前面程序有语法问题,后面的就不提示了。
[解决办法]
昨晚没有注意
对于我2楼的回复适用于Application->MessageBox()
如下面两种情况可以通过
String confirm_message= "Text";Application->MessageBox(L"Texxt",confirm_message.c_str() ,MB_ICONWARNING) ;//--------------------------------------------AnsiString confirm_message= "Text";MessageBox(this->Handle, confirm_message.c_str(), "删除用户", 1);
[解决办法]
confirm_message.t_str()