Format函数 格式化遇到的问题

bootleague 2018-03-12 06:06:31
环境:WIN7 x64 BCB6

编译时报错:
[C++ Warning] Unit_S.cpp(464): W8098 Multi-character character constant
[C++ Error] Unit_S.cpp(464): E2129 Character constant too long (or empty)
[C++ Error] Unit_S.cpp(465): E2188 Expression syntax


本人新手小白,这是我网上搜索从delphil移植到BCB一段代码,请各位指点,到底是语法错误?还是表达式太长了!

代码如下



//代码如下
void __fastcall TFormMain::IdIcmpClientReply(TComponent *ASender,
const TReplyStatus &AReplyStatus)
{
String sTime;
if (AReplyStatus.MsRoundTripTime == 0)
sTime = "<1";
else
{
sTime = "=";

Memo1->Lines->Add(Format('%d bytes from %s: icmp_seq=%d ttl=%d time%s%d ms',
[AReplyStatus.BytesReceived,
AReplyStatus.FromIpAddress,
AReplyStatus.SequenceId,
AReplyStatus.TimeToLive,
sTime,
AReplyStatus.MsRoundTripTime]));
}
}
...全文
583 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
bootleague 2018-03-14
  • 打赏
  • 举报
回复
感谢各位,虽然分不多,还是得到了耐心解答,受教了! 结贴
hongss 2018-03-13
  • 打赏
  • 举报
回复
//代码如下
void __fastcall TFormMain::IdIcmpClientReply(TComponent *ASender,
	  const TReplyStatus &AReplyStatus)
{
	String sTime;
	if (AReplyStatus.MsRoundTripTime == 0)
	sTime = "<1";
	else
	{
	sTime = "=";

	Memo1->Lines->Add( Format( "%d bytes from %s: icmp_seq=%d ttl=%d time=%s %d ms",
	ARRAYOFCONST(( AReplyStatus.BytesReceived,
				   AReplyStatus.FromIpAddress,
				   AReplyStatus.SequenceId,
				   AReplyStatus.TimeToLive,
				   sTime,
				   AReplyStatus.MsRoundTripTime)) ));
	}
}
hongss 2018-03-13
  • 打赏
  • 举报
回复
LZ以前是用Delphi的? 你现在的这种写法,Delphi里可以,在BCB里,就要用 ARRAYOFCONST 来取代[ ]~~~
hongss 2018-03-13
  • 打赏
  • 举报
回复
呃。。。Delphi移植的~~ 两个问题: 1、就是上边说的 在BCB里,要用 ARRAYOFCONST 来取代[ ] 2、你的Format里,5个参数,后边有6个变量
ccrun.com 2018-03-13
  • 打赏
  • 举报
回复
在C++里建议用String的sprintf
ooolinux 2018-03-12
  • 打赏
  • 举报
回复
C++Builder 中的 Format 函数及其用法 http://blog.163.com/tab_98/blog/static/11924097201592395544187/

13,824

社区成员

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

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