エラー、バグ、質問 - ページ 3040

 
Andrei Trukhanovich:

mqlの文字列は、文字列の中やリテラルの中、関数の中にもNULL文字があるのがとても嫌なのです。

唯一正常な方法は、終端がNULLの3つの文字列を配列に変換することです。

つまり、今のこの挙動は、何年か前に意図的に 行われたものなのです。理由はわかりません。

また、StringToCharArray以外に、内部NULLで正しく動作しない関数はありますか?

例えば、StringToShortArray- エラーなしで動作します。

StringCompareは以前は不正に 動作していましたが、これはかなり前に修正されました。

StringLenに関しては、正しく動作しません。

トレーディング、自動売買システム、ストラテジーテストに関するフォーラム

バグ、バグ、質問

A100, 2019.05.15 13:45

部分的にエラーを修正しただけ・・。なんでやねん私の記憶では、StringLenは常に正しく 動作していました(少なくともx32では)。

 
A100:

正確には覚えていませんが、ある時、内部にNULLを含む文字列が0に切り捨てられました。多分、stringconcatenateか、単純な文字列操作で。

 

素晴らしいフォーラムで、今日の午後には返信を送ることができました。返信そのものがなくなってしまった。

月曜日、昼過ぎに...


 

複数の端末を最小化。しかし、各端末は独自のアラートウィンドウにアラートを出し、折りたたまれることはありません。

どのアラートウィンドウがどの端末に対応しているかは、どのように確認すればよいですか?

 
fxsaber:

複数の端末を最小化。しかし、各端末は独自のアラートウィンドウにアラートを出し、折りたたまれることはありません。

どのアラートウィンドウがどの端末に対応しているかを把握する方法は?

端末固有のIDについてはわかりませんが、AccountInfoString(ACCOUNT_COMPANY)をアラートに追加すればよいでしょう。1つの証券会社に複数のMT5インスタンスを同時にログインさせる人はいないと思いますが、仮に同じ証券会社の異なるアカウントに座る必要がある場合は、まだ合理的である可能性があります。この場合、(最低限)AccountInfoInteger(ACCOUNT_LOGIN) またはAccountInfoString(ACCOUNT_SERVER) が有効かもしれません。

 
x572intraday:

ユニークな端末IDのことはわかりませんが、アラートにAccountInfoString(ACCOUNT_COMPANY)を追加すればよいでしょう。同じ証券会社に複数のMT5インスタンスを同時にログインさせる人はいないと思いますが、仮に同じ証券会社の異なるアカウントに座る必要がある場合は、まだ価値があるかもしれませんね。この場合、(最悪の場合)AccountInfoInteger(ACCOUNT_LOGIN)AccountInfoString(ACCOUNT_SERVER) で良いだろう。

はい、Alertsに任意の識別データを入れることができます。しかし、質問は一般的な場合についてです。

 
A100:

StringToCharArray以外で、内部ゼロが正しく動作しない関数は何ですか?

例えば、StringToShortArrayは エラーなく動作します。

StringCompareは以前は不正に 動作していましたが、これはかなり前に修正されました。

StringLenについては


確かに、StringToCharArrayの動作が変更され、最初の' \0'文字までではなく、文字列の全長が対象となりました。

 
Ilyas:

確かに、StringToCharArrayの動作を変更し、最初の' \0'文字まででなく、文字列の全長にしました。

そうすると、StringToCharArrayとStringToShortArrayの 違いは1つだけです

取引・自動売買システム・ストラテジーテストに関するフォーラム

エラー・バグ・問題

A100

, 2021.05.25 00:16
void OnStart()
{
    string text = "ABC";
    const int start = 0, count = 0;
    uchar array1[]; int n1 = StringToCharArray(  text, array1, start, count );
    short array2[]; int n2 = StringToShortArray( text, array2, start, count );
    Print( n1, ":", n2 );
}

結果:4:0

期待:0:0

 
A100:
そうするとStringToCharArray とStringToShortArray違いはただ 一つ、
です。

挙動を同じにした。


さらに:近い将来、配列と文字列は、例えば、メソッドで補完されるでしょう。

str.ToCharArray(char_arr, from_position, symbol_count);
str.Length();

arr.Size();
string str = char_arr.ToString( code_page );

if(!obj_arr.Push( constructor_parameters ))
   CriticalError("failed to add element");

obj_arr.Sort( compare_func_ptr, context );

obj_arr.Select( uint_result_index_array, filter_func_ptr, context );
 
Ilyas:

近い将来、配列と文字列はメソッドによって補完されるでしょう。

MQL4との共通点が少なくなってきた...。