ありがとう。とても参考になりましたが、一読しただけでは...)))))
コードを書くときにヘルプを読むのは、何となく苦痛で時間がかかる。この記事でPrintFormat()とStringFormat()の微妙な使い分けがよく理解できるようになるといいのですが。
おそらく、ヘルプの中で唯一明らかにされていない点、つまり、データ・サイズ指定子(h | l | ll | I32 | I64)を指定しなくてもすべてが機能する場合、どのような場合に指定するのが本当に便利なのか、がカバーされていないのだろう。
JRandomTrader #:
おそらく、ヘルプでカバーされていない唯一の明白でない点は、データサイズ指定子(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
JRandomTrader #:
おそらく、ヘルプの中で唯一明らかでない点がカバーされていない。それは、データサイズ指定子(h | l | ll | I32 | I64)を指定しなくてもすべてが機能するのであれば、どのような場合にデータサイズ指定子を指定するのが本当に便利なのかという点である。
おそらく、ヘルプの中で唯一明らかでない点がカバーされていない。それは、データサイズ指定子(h | l | ll | I32 | I64)を指定しなくてもすべてが機能するのであれば、どのような場合にデータサイズ指定子を指定するのが本当に便利なのかという点である。
もちろん、それは機能する。しかし、つい数時間前、同じ疑問について考えていたところ、あることを思いついた。関数にダブル値だけを渡し、その内部で何らかの基準に基づいて、これらのダブル・データはロング・データであるべきだと理解したとする。ここでサイズを指定するのだ。単なる思いつきです。確認はしていない。
この数年間、printformatなしでどうやって生きてきたのだろう?おそらくこれからもそうするだろう。
アーテム、私はこれがどこから来たのか理解できない。
uint w=(header_width==0 ? header.Length()+1 : header_width);
私はどのライブラリにも接続していない。それとも私は完全に盲目なのか?
取引の機会を逃しています。
- 無料取引アプリ
- 8千を超えるシグナルをコピー
- 金融ニュースで金融マーケットを探索
新しい記事「PrintFormat()を調べてすぐ使える例を適用する」はパブリッシュされました:
この記事は、初心者にも経験豊富な開発者にも役立つでしょう。PrintFormat()関数について調べ、文字列フォーマットの例を分析し、ターミナルのログに様々な情報を表示するためのテンプレートを書きます。
ログやモニター画面に値を表示するのは、「Hello, world」よりも複雑なものを表示しなくていい限り、シンプルで馴染みのある操作です。しかし、遅かれ早かれ、あまり需要のない値やプロパティをフォーマットして出力する必要がある状況が発生します。もちろん、MQL5のヘルプで調べることもできます。
しかし、場合によっては、MetaTrader 5ターミナルによって提供されるあらゆる種類の情報を表示するための、既製のレシピのコレクションがほしいことがあるでしょう。この記事では、PrintFormat関数の呼び出しの複雑さを理解し、コードに挿入するだけですぐに使えるようになるテンプレートを書いてみます。
作者: Artyom Trishkin