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

 
ozhiganov:

このサイトからダウンロードしたものも含め、すべてのブローカーの端末が動かなくなった...。

再起動してもダメ、再起動、再インストールもダメ、以前は全てうまくいっていたのに、パソコンには何もインストールしていないし、端末にも何もインストールしていない。マーケットで買い物をするだけ。

動作中のインジケーターやEAをひとつひとつ外して、何が問題なのかを確認します。

エラーの説明ウィンドウの「詳細」をクリックすると、詳細が表示されます。ここに全文をコピーしてください。

 

empty、インジケーターやEA端末を1つも持たずに、同じことを...。

 
Renat:

動作中のインジケーターやEAをひとつひとつキャプチャして、何が問題なのかを確認します。

エラーの説明ウィンドウにある「詳細」ボタンをクリックすると、詳細が表示されます。ここに全文をコピーしてください。

欲しいんだな?

crash --> 000007FCE8441F4F 48396B10 cmp [rbx+0x10], rbp

000007FCE8441F53 7530 jnz 0x7fce8441f85


000007FCE8441F55 488B03 mov rax, [rbx].

000007FCE8441F58 4C8BCF mov r9, rdi

000007FCE8441F5B 4D8BC7 mov r8, r15

000007FCE8441F5E 8BD6 mov edx, esi

000007FCE8441F60 488BCB mov rcx, rbx


: #021 00000000000011c8 eip: 0000000000000000 esp: 0000000000000000


: #022 0000000000001068 eip: 000007fcf54245db esp: 0000006818cffac8

000007FCF54245D1:00000A [000007FCF54245DB] NtYieldExecution (ntdll.dll)

000007FCF5426E50:000833 [000007FCF5427683] RtlUnicodeStringToInteger (ntdll.dll)

000007FCF3681828:00001A [000007FCF3681842] BaseThreadInitThunk(kernel32.dll)

000007FCF54774E8:000021 [000007FCF5477509] RtlVerifyVersionInfo (ntdll.dll)


: #023 000000000000111c eip: 000007fcf54245db esp: 0000006818e5fb18

000007FCF54245D1:00000A [000007FCF54245DB] NtYieldExecution (ntdll.dll)

000007FCF5426E50:000833 [000007FCF5427683] RtlUnicodeStringToInteger (ntdll.dll)

000007FCF3681828:00001A [000007FCF3681842] BaseThreadInitThunk (kernel32.dll)

000007FCF54774E8:000021 [000007FCF5477509] RtlVerifyVersionInfo (ntdll.dll)

 
プライベートメッセージで 全文を送りました
 

前の例を解析しているうちに、MQLとC++の決定的な違いがわかりました。

class A {};
class B : public A {};
class C {
public:
        virtual int g( A* a ) { return ( 1 ); }
        virtual int g( B* b ) { return ( 2 ); } //здесь полное совпадение
};
class D : public C {
public:
        virtual int g( A* a ) { return ( 3 ); }
};
void OnStart()
{
        B* b = new B;
        D* d = new D;
        Print( d.g( b ));
}

MQL(build978)では、結果は: 2 (C::g が呼ばれる)、C++では、結果は: 3 (D::g が呼ばれる)です。

つまり、MQLでは引数の型がベースクラスであっても完全に一致するものを優先し、C++では型が完全に一致しないかもしれないが暗黙の型変換が 可能な最も近いクラスを優先することがわかったのです。

最近のC++コンパイラで結果を確認し、違いが確認できたら、できれば統一的な目的のためにC++を支持するように決めてください。

 
ozhiganov:
プライベートメッセージで 全文を送りました。
ありがとうございます、検討させていただきます。
 

コピーコンストラクタや代入演算 子は、今後も予定されているのでしょうか?

ベースクラスAは15個のフィールドを持ち、2つの子孫クラスBとCを持ち、それぞれがさらに5個のフィールドを持つ。

あとは、20分程度のクエストですね。

 

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

バグ、バグ、質問

A100, 2014.08.29 16:28

Print(...)で出力するとエラーになる。

void OnStart()
{
        const int n = 300;
        Print( "n=", n );
        for ( int i = 0; i < n; i++ )
        {
                Print( i );
                if ( i == 0 )
                        Sleep( 2000 );
        }
}

印刷時に、出力の最初の部分が1から53までスキップされ(毎回異なる部分、明確なパターンはない)、途中でスキップされることもある。

で、299までスキップなしで印刷されます。

お時間のある方は、ぜひ実行してみて、出力に飛びがあれば書き込んでください。スキップがない場合 - nを大きくするか(私はn >= 300でスキップするようになりました)、または削除してみてください。

        if ( i == 0 )
                Sleep( 2000 );

リクエストにお応えして #1060016 | 2014.08.29 16:30https://www.mql5.com/ru/users/A100/servicedesk/closed/14774

"プリント飛ばしをどのように知らせればいいのか?"という質問がありました。- 最も単純なオプションは、読み飛ばした行の代わりに省略記号をつけた1行です

この行を見たユーザーは、抜けがあることを理解し、.logファイルを参照する必要があります(行番号は必要ありません - 単に例として)。
 
A100:

前の例を解析しているうちに、MQLとC++の決定的な違いがわかりました。

MQL(build978)では、結果は: 2 (C::g が呼ばれる)、C++では、結果は: 3 (D::g が呼ばれる)です。

つまり、MQLでは引数の型がベースクラスであっても完全に一致するものを優先し、C++では型が完全に一致しないかもしれないが暗黙の型変換が 可能な最も近いクラスを優先することがわかったのです。

最近のC++コンパイラで結果を確認し、違いが確認できたら、できれば統一的な目的のためにC++を支持するように決めてください。

そうなんです。完全に一致するものが優先されます。そして、それは本当に正しいのです。

なぜ、このような統一が必要なのでしょうか?不適切なプログラムの処理の一元化

 
ALXIMIKS:

コピーコンストラクタや代入演算 子は、今後も予定されているのでしょうか?

ベースクラスAは15個のフィールドを持ち、2つの子孫クラスBとCを持ち、それぞれがさらに5個のフィールドを持つ。

あとは、20分程度のクエストですね。

はい、そうします。しかし、近い将来には、まだ計画にはありません。