エラー、バグ、質問 - ページ 1970 1...196319641965196619671968196919701971197219731974197519761977...3185 新しいコメント pavlick_ 2017.08.21 16:01 #19691 pavlick_:ローカライズしようとしてスクリプトにエラーが出たので、今のところ回避しています。見つけたようです。if(sizeof(color) <= sizeof(ulong)) { if( ObjectCreate(0, "any_object", OBJ_TREND, 0, 0, 0) && ObjectSetInteger(0, "any_object", OBJPROP_COLOR, clrNONE) ) { ulong clr; if( ObjectGetInteger(0, "any_object", OBJPROP_COLOR, 0, clr) ) { Alert("clr == clrNONE ? ", clr == (ulong)clrNONE); Alert("clrNONE value = ", (ulong)clrNONE); Alert("value that was returned = ", clr); } } }アラートclr == clrNONE ? falseclrNONE 値 = 4294967295返された値 = 18446744073709551615 つまり、オブジェクトに色clrNONEを設定し、オブジェクトの色を読み取って clrNONEと比較したところ、両者は収束しませんでした。 A100 2017.08.21 16:27 #19692 pavlick_:すなわち、オブジェクトの色をclrNONEに設定し、オブジェクトの色を 読み取る よみかえる pavlick_ 2017.08.21 16:36 #19693 A100: 色を読み取るはい、ありがとうございます。そこで名前を直したのですが、エラーはそのままです。 fxsaber 2017.08.21 16:47 #19694 pavlick_:オブジェクトの色をclrNONEに設定し、オブジェクトの色を 読み、clrNONEと比較します。Alert("clr == clrNONE ? ", (color)clr == clrNONE); // true clrNONE -4 バイトのすべてのビットが1で埋め尽くされます。ulong clr -8 バイトの全ビットが1で埋め尽くされます。 A100 2017.08.21 17:09 #19695 pavlick_:はい、ありがとうございます。そこで名前を直したのですが、エラーはそのままです。実際には、ObjectGetIntegerでは、代わりにvoid ObjectGetInteger( long& x ) { x = clrNONE; } .void ObjectGetInteger( long& x ) { x = -1; } 解決策:それなら、どこでもxの代わりにxと書けばいい。(color)x pavlick_ 2017.08.21 17:14 #19696 fxsaber:clrNONE -4 バイトの全ビットが1で埋め尽くされます。ulong clr -8 バイトの全ビットが1で埋め尽くされます。ここに何らかの誤りがあると思われます。 1.Alert( long(clrNONE) ) == 4294967295 なので、clrNONEは正の4バイト数(もし負(色記号)ならマイナスに入る)。2.SetIntegerでlongに変換したところ、値が変更できなくなった3.SetIntegerでプライマリでない数値が表示されるのはなぜですか?端末内部で色が符号付き型、例えばintに変換され、alongに変換されると大きくなるのか、それとも別の何かか。 pavlick_ 2017.08.21 17:31 #19697 あらためて、ありがとうございました。インサイドカラーは、逆キャストで誤差があるため、サイン入りで鋳造しているのはほぼ間違いないと思います。ObjectGetInteger() { return long((uint)internal_clr); } というように、数文字で済むので、開発者次第で有効なObjectGetInteger() を書けます。 fxsaber 2017.08.21 17:39 #19698 これはエラー(異なる配列)なのか、そうでないのか?void OnStart() { short Data[] = {1}; short Data2[]; StringToShortArray(ShortArrayToString(Data), Data2); // StringToShortArray(ShortArrayToString(Data), Data2, 0, ArraySize(Data)); // так массивы совпадут ArrayPrint(Data); // 1 ArrayPrint(Data2); // 1 0 } TheXpert 2017.08.21 17:43 #19699 fxsaber: これはエラー(異なる配列)なのか、そうでないのか? はなく、最後に0が追加されただけです。 fxsaber 2017.08.21 17:46 #19700 Комбинатор: いいえ、終端の0を追加するだけです。上の行を追加 -行の長 さをコピーするように指定。合わせるようになった。つまり、入力パラメータcount = -1では末尾に0が追加され、count = StringLenでは何も追加されないことが判明したのです。ニュアンスィーク! 1...196319641965196619671968196919701971197219731974197519761977...3185 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
ローカライズしようとしてスクリプトにエラーが出たので、今のところ回避しています。
見つけたようです。
アラート
clr == clrNONE ? false
clrNONE 値 = 4294967295
返された値 = 18446744073709551615
すなわち、オブジェクトの色をclrNONEに設定し、オブジェクトの色を 読み取る
色を読み取る
はい、ありがとうございます。そこで名前を直したのですが、エラーはそのままです。
オブジェクトの色をclrNONEに設定し、オブジェクトの色を 読み、clrNONEと比較します。
clrNONE -4 バイトのすべてのビットが1で埋め尽くされます。
ulong clr -8 バイトの全ビットが1で埋め尽くされます。
はい、ありがとうございます。そこで名前を直したのですが、エラーはそのままです。
実際には、ObjectGetIntegerでは、代わりに
.
解決策:それなら、どこでもxの代わりにxと書けばいい。
clrNONE -4 バイトの全ビットが1で埋め尽くされます。
ulong clr -8 バイトの全ビットが1で埋め尽くされます。
ここに何らかの誤りがあると思われます。
1.Alert( long(clrNONE) ) == 4294967295 なので、clrNONEは正の4バイト数(もし負(色記号)ならマイナスに入る)。
2.SetIntegerでlongに変換したところ、値が変更できなくなった
3.SetIntegerでプライマリでない数値が表示されるのはなぜですか?
端末内部で色が符号付き型、例えばintに変換され、alongに変換されると大きくなるのか、それとも別の何かか。
これはエラー(異なる配列)なのか、そうでないのか?
いいえ、終端の0を追加するだけです。
上の行を追加 -行の長 さをコピーするように指定。合わせるようになった。つまり、入力パラメータcount = -1では末尾に0が追加され、count = StringLenでは何も追加されないことが判明したのです。ニュアンスィーク!