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

 
Koldun Zloy:

У Вас переменная count не статическая.

Как статическая функция узнает, какому объекту эта переменная принадлежит?

не принципиально, я вообще про то, что любая реализация работы со статик методами будет иметь не полную проверку от компилятора, а вся ответственность по контролю ложится на программиста

ладно, проехали, ибо пофиг - написал 2 раза одно и то же за день https://www.mql5.com/ru/forum/1111/page2564#comment_13249284

 
Igor Makanu:

я вообще про то, что любая реализация работы со статик методами будет иметь не полную проверку от компилятора, а вся ответственность по контролю ложится на программиста

Вот Вы где это прочитали?

Сами придумали, и повторяете без остановки?

 
Andrey Barinov:

Вот Вы где это прочитали?

Сами придумали, и повторяете без остановки?

я не придмал, это мое мнение... как и в принципе закрыть все работу со статиками только в пределах статиков как в С# - тогда точно не будет ни вопросов ни ошибок ;)

[Удален]  
Slava:

Несколько вопросов по платформе:

1. Будет ли добавлен допустимый диапазон торговли для ВП через MOEX (например, EURRUB_TOM)? Сейчас нельзя точно узнать, будет ли выставлена лимитка, т.к. нет доступа к диапазону (макс. и мин. возможным ценам). Добавьте, пожалуйста.

2. Можно ли добавить в терминал и метаэдитор автосохранение состояния каждые N минут? Очень не хватает, т.к. при внезапном разрыве связи возвращаешься к состоянию на момент старта программы с потерей всех изменений! Очень напрягает!

[Удален]  

Ребята, MQ, у Вас с хранилищем все в порядке? Коммитит секунд 10-20 один файл. Раньше моментом все было...

Добавлено: иногда просто виснет коммит...

 
В индикаторе на чарте с кастом-инструментом вызов функции CopyBuffer (с хэндлом обычной машки для реальных символов, например для EURUSD) возвращает ошибку 4806. Кастом символ построен по формуле XAUUSD/31.1035*USDRUB. Тот же пользовательский индикатор с тем же настройками работает нормально на реальном чарте (например, на XAUUSD, GBPUSD и т.д.). В чем может быть проблема?
[Удален]  
Slava:

При данном кастинге нет потери данных. Либо 0, либо не 0.

Другое дело, когда имеет место кастинг double -> любой целочисленный тип (до int32 включительно)

Что-то вы заигрались с предупреждениями на мой взгляд, не хватает последовательности в суждениях

bool continuation()const {return this.last_level;}  // uint last_level
// expression not boolean	lrp_last_9.mq5	260	42
 
Vict:

Что-то вы заигрались с предупреждениями на мой взгляд, не хватает последовательности в суждениях

Согласен

Здесь тоже в этом смысле нет потери данных (либо 0, либо не 0)

void OnStart()
{
        int i = -1;
        while ( ++i ); //Warning: expression not boolean
}

а предупреждение есть. Ожидалось единообразие подхода

 

Результат попытки доступа к свойству экземпляра класса из статической функции этого же класса:

2019.09.18 20:07:41.043 Test_exec (EURUSD,M5)   Access violation at 0x000001E9CCD2963C read to 0x0000000000000014 in 'D:\Alpari MT5\MQL5\Scripts\Test_exec.ex5'
2019.09.18 20:07:41.080 Test_exec (EURUSD,M5)      crash -->  000001E9CCD2963C 837B1400          cmp        dword [rbx+0x14], 0x0
2019.09.18 20:07:41.080 Test_exec (EURUSD,M5)                 000001E9CCD29640 0F8E8F020000      jle        dword 0x1e9ccd298d5
2019.09.18 20:07:41.080 Test_exec (EURUSD,M5)   
2019.09.18 20:07:41.080 Test_exec (EURUSD,M5)                 000001E9CCD29646 90                nop        
2019.09.18 20:07:41.080 Test_exec (EURUSD,M5)   
2019.09.18 20:07:41.080 Test_exec (EURUSD,M5)   00: 0x000001E9CCD2963C
2019.09.18 20:07:41.080 Test_exec (EURUSD,M5)   01: 0x000000B56CA2F120
2019.09.18 20:07:41.080 Test_exec (EURUSD,M5)   02: 0x000001E9CCD2A04D
Компилятор до этого молчал.
 

Не инициализирует пустую строку терминальным нулём.

void OnStart()
{      
   string str;
   StringInit(str, 100, 0);
   
   Print(StringLen(str));     
}

Результат

2019.09.18 22:16:54.380 TestScript (EURUSD,H1)  0

Ожидалось

2019.09.18 22:16:54.380 TestScript (EURUSD,H1)  100

Примечание в справке к функции StringInit

Примечание

Если  character=0 и размер new_len>0, то будет распределен буфер строки указанного размера и заполнен нулями. 
Размер строки будет равен нулю, так как весь буфер заполнен терминаторами строки.

По факту не какого распределения не происходит.
т.е распределение таким способом, десять пробелов

string str = "          ";

не то же самое, что

string str;
StringInit(str, 10, 0);

И как то не сходится логика поведения, в тексте справки выделенное красным.