Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Delphi 如何正确格式化此行?_Delphi - Fatal编程技术网

Delphi 如何正确格式化此行?

Delphi 如何正确格式化此行?,delphi,Delphi,我有 标准损坏当然是一个字符串 HowmuchDamge和WhatGetsDaged是整数 我知道我必须转换intToString(),但是要转换的格式是什么? 示例Send_Damage_Data_模板:='pd%s' 如果他们把字符串放在哪里,那么它就会发送 pd[howmuchdamage][whatgetsdamage]作为字符串。。但是如果它们是整数,我怎么设置呢 更新 pd只是协议代码,所以服务器知道如何处理它 strDamage := format(SEND_DAMAGE_DATA

我有

标准损坏当然是一个字符串 HowmuchDamge和WhatGetsDaged是整数

我知道我必须转换intToString(),但是要转换的格式是什么? 示例
Send_Damage_Data_模板:='pd%s'

如果他们把字符串放在哪里,那么它就会发送 pd[howmuchdamage][whatgetsdamage]作为字符串。。但是如果它们是整数,我怎么设置呢

更新

pd只是协议代码,所以服务器知道如何处理它

strDamage := format(SEND_DAMAGE_DATA_TEMPLATE,HowMuchDamage,WhatGetsDamaged);

我得到一个错误,说strDamgae行上没有格式重载

注意:此答案是以问题的原始形式发布的,而不是包含实际代码的编辑版本。请参阅修订历史记录

我不确定
SEND\u DAMAGE\u DATA\u模板
的内容表示什么,如
pd%s'所述,因为
%s`是一个字符串说明符。为清楚起见,如果包含:

        procedure TCardcommunicator.SendDamage(HowMuchDamage : integer; WhatGetsDamaged : integer);
    var
      strDamage : string;
    begin
      strDamage := format(SEND_DAMAGE_DATA_TEMPLATE,HowMuchDamage,WhatGetsDamaged);
      FBackEnd.Send(format(SEND_DAMAGE_PKT_TEMPLATE,[length(strDamage),strDamage]));
    end;

  SEND_DAMAGE_DATA_TEMPLATE = 'pd%d%d';
  SEND_DAMAGE_PKT_TEMPLATE  = 'pd%.4d%s'+ chr(13) + chr(10);
%d
格式说明符表示它需要两个整数值

然后,您可以将其格式化为以下格式:

SEND_DAMAGE_DATA_TEMPLATE = 'Damage: %d  Location: %d';
%d
是整数的格式说明符


该函数的文档记录非常清楚,并且具有相当好的性能。

这没有什么意义。代码不编译。格式字符串有一个而不是两个占位符。什么是pd%s?请澄清.pd只是我发送给服务器的代码,以便它知道如何处理字符串。您的错误行没有执行我告诉您的操作。请更仔细地阅读我的代码示例,并阅读调用
Format
中的每个字符。尤其是代码中缺少的两个
[]
字符。@KenWhite括号。。。。谢谢:我不觉得它被用来做这里应该用的东西……是的,这就是我要找的。。那么,如果我发送这样的格式,它会将整数转换为字符串,正确吗?@Glen为什么不阅读文档?很清楚。有一些例子。你为什么不自己动手呢?我知道你有能力这样做。甚至连文档都不看似乎很懒。@KenWhite所以如果
HowMuchDamge:=5
WhatGetsDamaged:=3
它会将pd53作为字符串发送正确吗?@Glen:显然是的。
Format
函数总是返回一个字符串,因此为了在结果中放入两个整数值,必须将它们转换为字符串。“我不知道这怎么不清楚。@KenWhite谢谢,我不确定是否必须在末尾添加%s或其他东西,以告诉它以字符串形式发送。”。
strDamage := Format(SEND_DAMAGE_DATA_TEMPLATE, [ HowMuchDamage, 
                                                 WhatGetsDamaged ]);