谢谢。信息量很大,但不是一读就懂......))))))
在编写代码时阅读帮助是一件痛苦而费时的事情。我希望这篇文章能帮助我更好地理解 PrintFormat() 和 StringFormat() 的精妙之处。
也许帮助中唯一不明显的一点没有被提及--在什么情况下指定数据大小指定符(h | l | ll | I32 | I64)才真正有用,如果没有它一切都无法正常工作。
JRandomTrader #:
也许帮助中唯一没有涉及的非显而易见的一点是,如果不指定数据大小指定符 (h | l | ll | I32 | I64) 也能正常工作,那么指定数据大小指定符(h | l | ll | I32 | I64)就会非常有用。
也许帮助中唯一没有涉及的非显而易见的一点是,如果不指定数据大小指定符 (h | l | ll | I32 | I64) 也能正常工作,那么指定数据大小指定符(h | l | ll | I32 | I64)就会非常有用。
请看下面的示例
//+------------------------------------------------------------------+ //| 脚本程序启动功能| //+------------------------------------------------------------------+ void OnStart() { //--- long x = (long)0xFFFFFFFF * 1000; Print("\nDEC: ", typename(x)," x=",x,"\n---------"); Print("%hu: ", StringFormat("%hu",x)); Print("%u: ", StringFormat("%u",x)); Print("%I64u: ",StringFormat("%I64u",x)); Print("%llu: ", StringFormat("%llu",x)); Print("\nHEX: ", typename(x)," x=",StringFormat("%llx",x),"\n---------"); Print("%hx: ", StringFormat("%hx",x)); Print("%x: ", StringFormat("%x",x)); Print("%I64x: ",StringFormat("%I64x",x)); Print("%llx: ", StringFormat("%llx",x)); }
结果
2023.07.12 17:48:12.920 PrinFormat (EURUSD,H1) DEC: long x=4294967295000 2023.07.12 17:48:12.920 PrinFormat (EURUSD,H1) --------- 2023.07.12 17:48:12.920 PrinFormat (EURUSD,H1) %hu: 64536 2023.07.12 17:48:12.920 PrinFormat (EURUSD,H1) %u: 4294966296 2023.07.12 17:48:12.920 PrinFormat (EURUSD,H1) %I64u: 4294967295000 2023.07.12 17:48:12.920 PrinFormat (EURUSD,H1) %llu: 4294967295000 2023.07.12 17:48:12.920 PrinFormat (EURUSD,H1) 2023.07.12 17:48:12.920 PrinFormat (EURUSD,H1) HEX: long x=3 e7fffffc18 2023.07.12 17:48:12.920 PrinFormat (EURUSD,H1) --------- 2023.07.12 17:48:12.920 PrinFormat (EURUSD,H1) %hx: fc18 2023.07.12 17:48:12.920 PrinFormat (EURUSD,H1) %x: fffffc18 2023.07.12 17:48:12.920 PrinFormat (EURUSD,H1) %I64x: 3 e7fffffc18 2023.07.12 17:48:12.920 PrinFormat (EURUSD,H1) %llx: 3 e7fffffc18
没有打印格式,我是怎么活了这么多年的?我可能会继续这么做。
Artem,我不明白这从何而来?
uint w=(header_width==0 ? header.Length()+1 : header_width);
我没有插入任何图书馆。还是我完全瞎了眼?
新文章 研究PrintFormat()并应用现成的示例已发布:
这篇文章对初学者和有经验的开发人员都很有用。我们将研究PrintFormat()函数,分析字符串格式的示例,并编写用于在终端日志中显示各种信息的模板。
在日志或监视器屏幕上显示数值是一种简单而熟悉的操作,除非您需要显示比“你好,世界”更复杂的内容。但是,当您需要对不经常需要的值或属性进行格式化输出时,迟早会出现这种情况。当然,您可以查看MQL5的帮助。
但有时你想要一个现成的资料集合,用于显示MetaTrader 5终端提供的各种信息。在本文中,我们将尝试理解调用PrintFormat函数的复杂性,并编写现成的模板,您只需将其插入代码即可。
作者:Artyom Trishkin