Ошибки, баги, вопросы - страница 2142

 
Rashid Umarov:

10 лет уже почти как выложено https://www.mql5.com/ru/code/8007

маркет инфо в мт 5 не работает ...

Честно сказать я в замешательстве....


AccountInfoInteger(ACCOUNT_LOGIN)

при старте терминала дает 0, а должна давать номер счета....

0 дает несколько секунд, даже если терминал уже подключился к сети...

 

Еще вопрос о PlaySound 

использую в индикаторе.

Мелодия должна проиграть 3 секунды.

OnTimer  не подходит так как 3 секунды много а если меньше то мелодия гавкает

OnChartEvent не подходит нужен клик мыши или клавы

OnCalculyate не подходит, так как мелодия гавкает и не доигрывает до конца


Соль всей песни Sleep нельзя использовать в индюках ...


Вопрос к знатокам, как заставить проиграть PlaySound больше 2-3 секунд в индикаторе ???

 
Vladimir Pastushak:

Вопрос к знатокам, как заставить проиграть PlaySound больше 2-3 секунд в индикаторе ???

Запустить скрипт на OBJ_CHART-объекте. Так можно хоть целый аудио-плеер сделать в индикаторе.

 
fxsaber:

Запустить скрипт на OBJ_CHART-объекте. Так можно хоть целый аудио-плеер сделать в индикаторе.

Это как ? Не понял...

 

Ошибки при компиляции

class A {
public:                         //(*)
static void g1() {}
protected:                      //(**)
static void g2() {}
};
class B : A {};                 //(***)
class C : public B {
public:                         //                Основание:
       void f1() { this.g1(); } //(1) ошибка      ***    препятствуют
static void f2() {   A::g1(); } //(2) ошибка ???  *** не действуют (прямой доступ) +
                                //                  * не препятствует              +
                                //                    противоречие с (5)- там нормально
       void f3() { this.g2(); } //(3) ошибка      ***    препятствуют
static void f4() {   A::g2(); } //(4) ошибка ???  *** не действуют (прямой доступ) +
                                //                 ** не препятствует
};
void OnStart()
{                               //                Основание:
    A::g1();                    //(5) нормально
    A::g2();                    //(6) ошибка       **    препятствуют
}

Ошибки (2) и (4) не обоснованы хотя бы в силу противоречия (2) и (5)

  • (2) в С::f2    нет доступа к A::g1
  • (5) в OnStart есть доступ к A::g1

при том что синтаксис совпадает. А чем OnStart лучше?

С++ компиляторы могут давать разные результаты

 
Access violation at 0x00000001407742FB read to 0xFFFFFFFFFFFFFFFF
              0000000140774020 48895C2418        mov        [rsp+0x18], rbx
              0000000140774025 57                push       rdi
              0000000140774026 4156              push       r14
              0000000140774028 4157              push       r15
              000000014077402A 4883EC20          sub        rsp, 0x20
              000000014077402E 8B7A08            mov        edi, [rdx+0x8]
              0000000140774031 488BDA            mov        rbx, rdx
              0000000140774034 0FB75202          movzx      edx, word [rdx+0x2]
              0000000140774038 4C8BF1            mov        r14, rcx
              000000014077403B 0FB6C2            movzx      eax, dl
              000000014077403E 0FB6CA            movzx      ecx, dl
              0000000140774041 C0E803            shr        al, 0x3
              0000000140774044 A801              test       al, 0x1
              0000000140774046 0F845E010000      jz         dword 0x1407741aa

              000000014077404C 498B8638020000    mov        rax, [r14+0x238]
              0000000140774053 4C8B80300B0000    mov        r8, [rax+0xb30]
              000000014077405A 4D85C0            test       r8, r8
              000000014077405D 0F8447010000      jz         dword 0x1407741aa

              0000000140774063 4533FF            xor        r15d, r15d
              0000000140774066 6683CA01          or         dx, 0x1
              000000014077406A 66895302          mov        [rbx+0x2], dx
              000000014077406E 418BFF            mov        edi, r15d
              0000000140774071 4C897B1C          mov        [rbx+0x1c], r15
              0000000140774075 458B08            mov        r9d, [r8]
              0000000140774078 4585C9            test       r9d, r9d
              000000014077407B 0F84A0020000      jz         dword 0x140774321

              0000000140774081 498B9638020000    mov        rdx, [r14+0x238]
              0000000140774088 4885D2            test       rdx, rdx
              000000014077408B 7430              jz         0x1407740bd

              000000014077408D 488B8AC80E0000    mov        rcx, [rdx+0xec8]
              0000000140774094 4885C9            test       rcx, rcx
              0000000140774097 7419              jz         0x1407740b2

              0000000140774099 488B82300B0000    mov        rax, [rdx+0xb30]
              00000001407740A0 4885C0            test       rax, rax
              00000001407740A3 740D              jz         0x1407740b2

              00000001407740A5 3B38              cmp        edi, [rax]
              00000001407740A7 7309              jae        0x1407740b2
              00000001407740A9 448BC7            mov        r8d, edi
              00000001407740AC 4A8B04C1          mov        rax, [rcx+r8*8]
              00000001407740B0 EB06              jmp        0x1407740b8

              00000001407740B2 498BC7            mov        rax, r15
              00000001407740B5 448BC7            mov        r8d, edi
              00000001407740B8 483BC3            cmp        rax, rbx
              00000001407740BB 7416              jz         0x1407740d3

              00000001407740BD FFC7              inc        edi
              00000001407740BF 413BF9            cmp        edi, r9d
              00000001407740C2 72C4              jb         0x140774088

              00000001407740C4 488B5C2450        mov        rbx, [rsp+0x50]
              00000001407740C9 4883C420          add        rsp, 0x20
              00000001407740CD 415F              pop        r15
              00000001407740CF 415E              pop        r14
              00000001407740D1 5F                pop        rdi
              00000001407740D2 C3                ret        

              00000001407740D3 4885C9            test       rcx, rcx
              00000001407740D6 7437              jz         0x14077410f

              00000001407740D8 488B82300B0000    mov        rax, [rdx+0xb30]
              00000001407740DF 4885C0            test       rax, rax
              00000001407740E2 742B              jz         0x14077410f

              00000001407740E4 3B38              cmp        edi, [rax]
              00000001407740E6 7327              jae        0x14077410f
              00000001407740E8 4A8B04C1          mov        rax, [rcx+r8*8]
              00000001407740EC 4885C0            test       rax, rax
              00000001407740EF 741E              jz         0x14077410f

              00000001407740F1 4C89781C          mov        [rax+0x1c], r15
              00000001407740F5 488B82C80E0000    mov        rax, [rdx+0xec8]
              00000001407740FC 4A8B0CC0          mov        rcx, [rax+r8*8]
              0000000140774100 44897908          mov        [rcx+0x8], r15d
              0000000140774104 488B82C80E0000    mov        rax, [rdx+0xec8]
              000000014077410B 4E893CC0          mov        [rax+r8*8], r15
              000000014077410F 4538BE4F290000    cmp        [r14+0x294f], r15b
              0000000140774116 0F8505020000      jnz        dword 0x140774321

              000000014077411C 498B8638020000    mov        rax, [r14+0x238]
              0000000140774123 F780280700000000  test       dword [rax+0x728], 0x1000000
                               0001
              000000014077412D 0F84EE010000      jz         dword 0x140774321

              0000000140774133 B93C050000        mov        ecx, 0x53c
              0000000140774138 66398826070000    cmp        [rax+0x726], cx
              000000014077413F 0F82DC010000      jb         dword 0x140774321

              0000000140774145 498B8E98000000    mov        rcx, [r14+0x98]
              000000014077414C 4885C9            test       rcx, rcx
              000000014077414F 0F84CC010000      jz         dword 0x140774321

              0000000140774155 488B01            mov        rax, [rcx]
              0000000140774158 488B9090070000    mov        rdx, [rax+0x790]
              000000014077415F 488D054ACDFBFF    lea        rax, [rip-0x432b6]
              0000000140774166 483BD0            cmp        rdx, rax
              0000000140774169 0F85E0010000      jnz        dword 0x14077434f

              000000014077416F 488B050A5F4C00    mov        rax, [rip+0x4c5f0a]
              0000000140774176 0FB68098420000    movzx      eax, byte [rax+0x4298]
              000000014077417D 84C0              test       al, al
              000000014077417F 0F849C010000      jz         dword 0x140774321

              0000000140774185 448BCF            mov        r9d, edi
              0000000140774188 4C8D0529FC2C00    lea        r8, [rip+0x2cfc29]
              000000014077418F BA01000000        mov        edx, 0x1
              0000000140774194 498BCE            mov        rcx, r14
              0000000140774197 488B5C2450        mov        rbx, [rsp+0x50]
              000000014077419C 4883C420          add        rsp, 0x20
              00000001407741A0 415F              pop        r15
              00000001407741A2 415E              pop        r14
              00000001407741A4 5F                pop        rdi
              00000001407741A5 E9C6560000        jmp        0x140779870

              00000001407741AA F6C101            test       cl, 0x1
              00000001407741AD 0F847D010000      jz         dword 0x140774330

              00000001407741B3 F6C206            test       dl, 0x6
              00000001407741B6 0F8574010000      jnz        dword 0x140774330

              00000001407741BC 4533FF            xor        r15d, r15d
              00000001407741BF 48896C2440        mov        [rsp+0x40], rbp
              00000001407741C4 488B6B1C          mov        rbp, [rbx+0x1c]
              00000001407741C8 44897B18          mov        [rbx+0x18], r15d
              00000001407741CC 44897B08          mov        [rbx+0x8], r15d
              00000001407741D0 4885ED            test       rbp, rbp
              00000001407741D3 0F8443010000      jz         dword 0x14077431c

              00000001407741D9 4885FF            test       rdi, rdi
              00000001407741DC 0F84FE000000      jz         dword 0x1407742e0

              00000001407741E2 440FB703          movzx      r8d, word [rbx]
              00000001407741E6 664183F859        cmp        r8w, 0x59
              00000001407741EB 7411              jz         0x1407741fe

              00000001407741ED 4C397B2C          cmp        [rbx+0x2c], r15
              00000001407741F1 750B              jnz        0x1407741fe

              00000001407741F3 664183F85D        cmp        r8w, 0x5d
              00000001407741F8 0F85E2000000      jnz        dword 0x1407742e0

              00000001407741FE B901000000        mov        ecx, 0x1
              0000000140774203 488D530C          lea        rdx, [rbx+0xc]
              0000000140774207 8B02              mov        eax, [rdx]
              0000000140774209 85C0              test       eax, eax
              000000014077420B 740F              jz         0x14077421c

              000000014077420D 480FAFF8          imul       rdi, rax
              0000000140774211 FFC1              inc        ecx
              0000000140774213 4883C204          add        rdx, 0x4
              0000000140774217 83F904            cmp        ecx, 0x4
              000000014077421A 7CEB              jl         0x140774207

              000000014077421C 664183F85D        cmp        r8w, 0x5d
              0000000140774221 7517              jnz        0x14077423a

              0000000140774223 4C8D04FD00000000  lea        r8, [rdi*8+0x0]
              000000014077422B 33D2              xor        edx, edx
              000000014077422D 488BCD            mov        rcx, rbp
              0000000140774230 E82BEEA0FF        call       0x140183060  ; #14396 (terminal64.exe)
              0000000140774235 E9A6000000        jmp        0x1407742e0

              000000014077423A 664183F859        cmp        r8w, 0x59
              000000014077423F 7517              jnz        0x140774258

              0000000140774241 498D8E98010000    lea        rcx, [r14+0x198]
              0000000140774248 448BC7            mov        r8d, edi
              000000014077424B 488BD5            mov        rdx, rbp
              000000014077424E E86D48FEFF        call       0x140758ac0  ; #29073 (terminal64.exe)
              0000000140774253 E988000000        jmp        0x1407742e0

              0000000140774258 4889742448        mov        [rsp+0x48], rsi
              000000014077425D 488BF7            mov        rsi, rdi
              0000000140774260 4885FF            test       rdi, rdi
              0000000140774263 7426              jz         0x14077428b

              0000000140774265 6666660F1F840000  o16 nop        [rax+rax+0x0]
                               000000
              0000000140774270 4C8B432C          mov        r8, [rbx+0x2c]
              0000000140774274 488BD5            mov        rdx, rbp
              0000000140774277 498BCE            mov        rcx, r14
              000000014077427A E86CD783FF        call       0x13ffb19eb  ; #5243 (terminal64.exe)
              000000014077427F 8B4304            mov        eax, [rbx+0x4]
              0000000140774282 4803E8            add        rbp, rax
              0000000140774285 4883EF01          sub        rdi, 0x1
              0000000140774289 75E5              jnz        0x140774270

              000000014077428B F6430220          test       byte [rbx+0x2], 0x20
              000000014077428F 744A              jz         0x1407742db

              0000000140774291 488B542438        mov        rdx, [rsp+0x38]
              0000000140774296 498BCE            mov        rcx, r14
              0000000140774299 E8B2540000        call       0x140779750  ; #29352 (terminal64.exe)
              000000014077429E 4885C0            test       rax, rax
              00000001407742A1 7438              jz         0x1407742db

              00000001407742A3 B9EC020000        mov        ecx, 0x2ec
              00000001407742A8 66398826070000    cmp        [rax+0x726], cx
              00000001407742AF 722A              jb         0x1407742db

              00000001407742B1 488B7B1C          mov        rdi, [rbx+0x1c]
              00000001407742B5 4885F6            test       rsi, rsi
              00000001407742B8 7421              jz         0x1407742db

              00000001407742BA 660F1F440000      o16 nop        [rax+rax+0x0]
              00000001407742C0 488B17            mov        rdx, [rdi]
              00000001407742C3 498D8E38010000    lea        rcx, [r14+0x138]
              00000001407742CA E82151FEFF        call       0x1407593f0  ; #29085 (terminal64.exe)
              00000001407742CF 8B4304            mov        eax, [rbx+0x4]
              00000001407742D2 4803F8            add        rdi, rax
              00000001407742D5 4883EE01          sub        rsi, 0x1
              00000001407742D9 75E5              jnz        0x1407742c0

              00000001407742DB 488B742448        mov        rsi, [rsp+0x48]
              00000001407742E0 0FB703            movzx      eax, word [rbx]
              00000001407742E3 B980000000        mov        ecx, 0x80
              00000001407742E8 663BC1            cmp        ax, cx
              00000001407742EB 721B              jb         0x140774308

              00000001407742ED B900800000        mov        ecx, 0x8000
              00000001407742F2 663BC1            cmp        ax, cx
              00000001407742F5 7311              jae        0x140774308
              00000001407742F7 488B531C          mov        rdx, [rbx+0x1c]
   crash -->  00000001407742FB 486342FC          movsxd     rax, dword [rdx-0x4]
              00000001407742FF 482BD0            sub        rdx, rax
              0000000140774302 4889531C          mov        [rbx+0x1c], rdx
              0000000140774306 EB04              jmp        0x14077430c

              0000000140774308 488B531C          mov        rdx, [rbx+0x1c]
              000000014077430C 498D8EA0000000    lea        rcx, [r14+0xa0]
              0000000140774313 E8A805FEFF        call       0x1407548c0  ; #29022 (terminal64.exe)

00: 0x00000001407742FB
01: 0x000000000000000A
 
Vladimir Pastushak:

Это как ? Не понял...

Проигрывание из индикатора любой длительности звукового файла.

Скрипт Scripts\PlaySound.mq5

#include <GlobalVariables.mqh> // https://www.mql5.com/ru/forum/189649#comment_4854618

void OnStart()
{
  const string SoundName = "SOUND";

  if (GlobalVariableCheck(SoundName))
  {
    PlaySound(_GlobalVariableGet<string>(SoundName));
  
    _GlobalVariableDel(SoundName);
  }
}


Индикатор

#property indicator_chart_window

#property indicator_buffers 0
#property indicator_plots indicator_buffers

#include <fxsaber\Expert.mqh>  // https://www.mql5.com/ru/code/19003
#include <GlobalVariables.mqh> // https://www.mql5.com/ru/forum/189649#comment_4854618

class PLAYER
{
public:
  const string Name;
  const long Chart;
  const long chartID;
  
  PLAYER( const long iChart = 0 ) : Name(__FILE__), Chart(iChart ? iChart : ::ChartID()),
                                    chartID(::ObjectCreate(this.Chart, this.Name, OBJ_CHART, 0, 0, 0)   &&
                                            ::ObjectSetInteger(this.Chart, this.Name, OBJPROP_XSIZE, 0) &&
                                            ::ObjectSetInteger(this.Chart, this.Name, OBJPROP_YSIZE, 0) ?
                                            ::ObjectGetInteger(this.Chart, this.Name, OBJPROP_CHART_ID) : this.Chart)
  {
  }
  
  ~PLAYER()
  {
    if (this.chartID != this.Chart)
      ::ObjectDelete(this.Chart, this.Name);
  }
  
  void PlaySound( string FileName, const string ScriptName = "Scripts\\PlaySound.ex5" ) const
  {
    static const string SoundName = "SOUND";
    
    if (_GlobalVariableSet(SoundName, FileName))
    {
      MqlParam Params[1];
      
      Params[0].string_value = ScriptName;
      
      if (!EXPERT::Run(this.chartID, Params))      
        _GlobalVariableDel(SoundName);
    }    
  }
};

int OnCalculate( const int rates_total , const int prev_calculated, const int, const double& [] )
{  
  if (!prev_calculated)
  {
    const PLAYER Player;
    
    Player.PlaySound("email.wav");
  }

  return(rates_total);
}
 

Не работает PlaySound( NULL )

void OnStart()
{
    if ( !PlaySound( "timeout.wav" ) ) Print( "1:", GetLastError());
    if ( !PlaySound( NULL          ) ) Print( "2:", GetLastError());
}

Результат: 2:4002

и при этом не останавливает воспроизведение

 
fxsaber:

Проигрывание из индикатора любой длительности звукового файла.

Скрипт Scripts\PlaySound.mq5


Индикатор

Правильно я понял, для проигрывания файла Вы запускаете скрипт? 

 
fxsaber:

Добрый день! Это креш терминала или метаэдитора? При каких обстоятельствах возник креш?

Какая битность/версия терминала/ОС ?

Причина обращения: