見出し画像

MT4/MQLソースサンプル:ゼロパディング処理

#MQL
#MT4
#ソース公開
#無料

処理内容

「ゼロ揃え」とか「桁そろえ」とか「桁合わせ」とかとも言いますでしょうか
基本の基本、ゼロパディングのMQLソースを無料公開します。

ゼロパディング (英: zero padding) またはゼロ埋めは、文字で数値を表す際に、書式で指定された桁数に満たない場合に、桁数をそろえるためゼロを付加することである。
by wikipedia

ということで、桁数(文字数)を揃える目的で「12」→「00012」や「345」→「00345」のように左に「0」を何個かくっつけることです。
これが意外と揃わない時が多いんです。
特に時刻とか日付系
外部APIとかサーバーとか、ローカルタイムとか色々 判定して処理したいときに
あれ、動かないじゃんって思うとゼロが揃ってなかったりするんですよね。

こんな感じで
サーバーから取った日付:02/08/2021  
とあるAPIから取った日付:2/8/2021 

まあ他にも指標系のニュース使ったりするときもこの現象は発生します。

そんな時はこの関数にかましちゃってください。
使い方は簡単

使い方

桁合わせ後の文字列 = ZeroPading(変数,桁数)
■引数
変数(int),揃えたい桁数(int)

■返り値
揃った後の文字列(string)

無料ソースコード

■関数側のコードです。
呼び出し側の前に記述されている必要があります。

//+------------------------------------------------------------------+
//| ゼロパディング    ZeroPading  
//|  code by KOUSHIROU
//|  https://note.com/mt4_coder                            
//+------------------------------------------------------------------+
string ZeroPading(int rawdigits, int digits)
 {
  string result = IntegerToString(rawdigits);
  int    length = StringLen(result);
  if(length >= digits)
   {
     return(result);
    }
  for(int i = 0; i < digits - length; i++)
    {
     result = "0" + result;
    }
  return(result);
 }
//+------------------------------------------------------------------+

■呼び出し側のコードです。
日付が1桁の場合にゼロ付けする。例)5 → 05、31→31(2桁の場合はそのまま) 

string day_2dig = ZeroPading(Day(),2);

5桁に統一する 例)123→00123にする

string nazo_code = 123;
int marumekomi = 5;
string aft_code = ZeroPading(nazo_code,marumekomi);

以上​でございます。もし間違い・アドバイス等ありましたら、遠慮なくご指摘くださいませ。

この記事が気に入ったらサポートをしてみませんか?