请教BCB中Format的用法?

fido 2000-02-24 10:13:00
加精
我在BCB中使用Format来给字符串赋值,
SysInfo.szVersion = Format("&d.%d", OS.dwMajorVersion,
OS.dwMinorVersion);

出现以下错误:
Cannot convert 'unsigned long' to 'const TVarRec'.
Type mismatch in parameter 'Args' in call to 'Format(...)'.

在Delphi中这应该是可以的,请问在BCB中的正确格式是怎样呢?
谢谢!
...全文
1124 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
Hank 2000-07-14
  • 打赏
  • 举报
回复
要用ARRAYOFCONST()函数转换!
例如:
Edit4->Text="125";
Edit5->Text="214";
Edit6->Text=Format("%d.%d",ARRAYOFCONST((StrToInt(Edit4->Text),StrToInt(Edit5->Text))));

则返回: 125.214
halfdream 2000-06-03
  • 打赏
  • 举报
回复
这是因为PASCAL 和C++ 的语法差异, C++ 中没有Pascal 那种数组。
这样就行了:
SysInfo.szVersion = Format("%d.%d", OPENARRAY(TVarRec,(OS.dwMajorVersion,
OS.dwMinorVersion)));
wu_xin 2000-06-03
  • 打赏
  • 举报
回复
试试:
SysInfo.szVersion = Format("&ld.%ld", OS.dwMajorVersion,
OS.dwMinorVersion);
看怎么样?
pcly 2000-06-02
  • 打赏
  • 举报
回复
Please Press F1 For Help
bunny 2000-02-27
  • 打赏
  • 举报
回复
你的问题主要是数据类型不匹配,Format中的参数TVarRec是这样定义的:
class TVarRec
{
public:
union
{
Integer VInteger;
Boolean VBoolean;
Char VChar;
PExtended VExtended;
PShortString VString;
Pointer VPointer;
PChar VPChar;
TObject* VObject;
TClass VClass;
WideChar VWideChar;
PWideChar VPWideChar;
Pointer VAnsiString;
PCurrency VCurrency;
PVariant VVariant;
};
union
{
Byte VType;
/*
long ForceAlignment;
#if 0
//! The ForceAlignment should be removed, if alignment set to 4
//! we don't need this
#endif
*/
};
}
所以解决你的问题,只要强制转换应该就可以了,另外要注意的是,如果只有一个变量时要用宏ARRAYOFCONST,如:
void __fastcall TForm1::Table1AfterDelete(TDataSet *DataSet)

{
StatusBar1->SimpleText = Format("There are now %d records in the table", ARRAYOFCONST(((int)DataSet->RecordCount));
}

929 2000-02-24
  • 打赏
  • 举报
回复
用%S在FORMAT中试试。
radish 2000-02-24
  • 打赏
  • 举报
回复
如果我没有记错,BCB中的FORMAT是用于数组变量的

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧