ShortToString関数の働き・役割
ShortToString関数は、MQL5でUnicodeシンボルコードを1文字の文字列に変換するための関数です。この関数を使用することで、シンボルコードを対応する文字に変換して扱うことができます。例えば、Unicodeを対応する文字に変換して表示する際に便利です。
Unicodeシンボルコードとは?
Unicodeシンボルコードとは、Unicode標準で定義されている文字の一意(1つしか存在しない)のコードポイントです。
これにより、世界中の文字やシンボルを統一された形式で扱うことができます。
※Unicodeについての詳細は↓の記事をご参照ください。
MQL5では、ushort型でUnicodeシンボルコードを扱います。
具体例として、Unicode番号U+0041は’A’、U+0042は’B’、U+2665は’♥’を表します。
U+の後に続く4桁の16進数がUnicodeシンボルコードを示しています。
※16進数についての詳細は↓の記事をご参照ください。
文字列とは?
文字列とは、文字の並びを意味し、プログラム内でテキストデータを扱うために使用されます。MQL5では、string型で文字列を扱います。文字列は、ユーザーへのメッセージ表示、ログ出力、ファイルの読み書きなど、多くの場面で利用されます。
ShortToString関数の引数について
string ShortToString(ushort symbol_code);
第1引数は変換したいシンボルコードを指定します。
このシンボルコードはushort型です。
シンボルコードの代わりに、Unicodeの表にある2バイトの16進数コードを含むリテラル文字列(直接値を示す文字列)を使用することもできます。
例えば、16進数の0x0041は10進数では65を表し、これは’A’のUnicodeコードポイントです。
ShortToString関数の戻り値について
ShortToString関数は文字列型を返します。指定されたUnicodeシンボルコードを1文字の文字列に変換した結果を返します。
ShortToString関数を使う際の注意点
ShortToString関数を使用する際には、変換するシンボルコードが有効なUnicodeコードポイントであることを確認してください。無効なシンボルコードを指定すると、予期しない結果になることがあります。
ShortToString関数を使ったサンプルコード
以下に、ShortToString関数を使用した具体的なサンプルコードを示します。このサンプルコードは、Unicodeシンボルコードを文字列に変換してエキスパートログに出力します。
// OnStart関数はスクリプトの実行が開始されたときに自動的に呼び出されます
void OnStart()
{
// Unicode番号U+23E9の文字から始まる18文字をループで出力します
for(int i=0; i<18; i++)
{
ushort code = 0x23E9 + (ushort)i;
string symbolString = ShortToString(code);
// 変換結果をエキスパートログに出力します
PrintFormat("Unicode number U+%hX: %s", code, symbolString);
}
/*
出力結果:
Unicode number U+23E9: ⏩
Unicode number U+23EA: ⏪
Unicode number U+23EB: ⏫
Unicode number U+23EC: ⏬
Unicode number U+23ED: ⏭
Unicode number U+23EE: ⏮
Unicode number U+23EF: ⏯
Unicode number U+23F0: ⏰
Unicode number U+23F1: ⏱
Unicode number U+23F2: ⏲
Unicode number U+23F3: ⏳
Unicode number U+23F4: ⏴
Unicode number U+23F5: ⏵
Unicode number U+23F6: ⏶
Unicode number U+23F7: ⏷
Unicode number U+23F8: ⏸
Unicode number U+23F9: ⏹
Unicode number U+23FA: ⏺
*/
}
サンプルコードに使われた関数や文法要素の簡単な解説
OnStart関数はスクリプトの実行が開始されたときに自動的に呼び出される関数です。この関数内で初期化処理やメイン処理を行います。
ushort型は符号なし短整数を表すデータ型です。0から65535までの範囲の数値を扱うことができます。サンプルコード内の「0x23E9」は16進数表記であり、10進数に換算すると9193です。
ShortToString関数はUnicodeシンボルコードを1文字の文字列に変換する関数です。変換後の文字列は、ログ出力やユーザー表示に利用されます。
forループは18回実行されます。ループの各回で変数iは0から17まで1ずつ増加し、それに応じてcode変数に0x23E9から0x23FAまでの値が代入されます。
(ushort)iの部分は、int型の変数iをushort型にキャスト(変換)しています。これは、iがushort型の範囲内であることを保証するためです。
※キャスト(タイプキャスト)とは、異なるデータ型に変換するプロセスのことです。タイプキャストについての詳細は↓の記事をご参照ください。
PrintFormat関数はフォーマットされた文字列をエキスパートログに出力する関数です。フォーマット指定子「U+%hX」は、数値を16進数表記で表示するためのものです。%hXは符号なし短整数を16進数で表示することを意味しています。