BCC32和BCC32C之间的另一个区别。 BCC32C无法正确显示格式化功能。 在以下示例中,BCC32显示" 7测试测试7" (正确),但BCC32C显示" 7测试测试"。 我正在使用Rad Studio 10.1。您可以复制它创建一个空项目,添加一个按钮,然后是以下代码:
void __fastcall TForm1::Button2Click(TObject *Sender)
{
int i=7;
String str="test";
ShowMessage(Format("%d %s %s %d", ARRAYOFCONST((i, str, str, i))));
}
有解决方法吗?我开始认为BCC32C尚未准备好投入生产。我发现了很多问题。
答案 0 :(得分:1)
我认为正确的方法是这样做:
void __fastcall TForm1::Button2Click(TObject *Sender)
{
int i=7;
String str="test";
TVarRec Args[] = {i, str, str, i};
ShowMessage(Format("%d %s %s %d", Args, 3));
}
萨姆
答案 1 :(得分:1)
经过研究,似乎我需要等待Rad Studio的新版本。 与此同时,我已经创建了一个解决方法,现在似乎有效:
#if defined(__clang__)
#define VRARRAY(...) (TVarRec[]){__VA_ARGS__}, sizeof((TVarRec[]){__VA_ARGS__})/sizeof(TVarRec)
#else
#define VRARRAY(...) System::OpenArray<System::TVarRec>(__VA_ARGS__), sizeof(System::OpenArrayCounter<System::TVarRec>::Count (__VA_ARGS__))-1
#endif
然后,我可以使用:
ShowMessage(Format("%d %s %s %d", VRARRAY(i, str, str, i)));