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

 
Ruslan Khasanov #:

При редактировании кода нашел странное поведение редактора. При вводе с клавиатуры определенных символов - t,o,s,d,f,g,h,l,c,b,m в качестве аргумента функции, курсор перескакивает на один символ вправо и редактор виснет(не отвечает).

О системе: Win11, i7-9700/64Gb RAM. Терминал: Build 3391.

Разработчикам могу предоставить исходники проекта.

могу подтвердить что с автодополнениями прямо беда-печаль. Я например печатаю быстро и если встречается префикс с большим числом вариантов, то редактор может просто повиснуть.

И на даже на отдельных безобидных сочетаниях символов внутри обращений SymbolInfoXXX, ChartInfoXX тоже. 

 

Вопрос по оптимизации к уважаемым разработчикам:

Запускаю этот скрипт в b3396
class C {};
class D: public C {};
void func(D*) {}

void OnStart()
  {
   C obj, *ptr = &obj;
   func(ptr);     //    incorrect casting of pointers
  }

При вызове func(ptr) вылет с runtime error, в т.ч. когда скрипт скомпилирован в release  с максимальной(!) оптимизацией. 

Причина ошибки понятна, но вопрос - почему эта строка вообще вызывается в релизе?

Ведь ф-я заведомо ничего не делает и при оптимизации этот код лучше вообще вырезать нафиг и ошибки выполнения не будет... (при отладке, конечно,  должен быть вылет с ошибкой).

 
mktr8591 #:

При вызове func(ptr) вылет с runtime error, в т.ч. когда скрипт скомпилирован в release  с максимальной(!) оптимизацией. 

Наверное, на этапе компиляции должен был быть warning с предложением сделать

func(dynamic_cast<D*>(ptr));
Причина ошибки понятна, но вопрос - почему эта строка вообще вызывается в релизе?

Вроде, инлайн не предполагает выкидывание.

 
Оповещения "Обновление заказа" во фрилансе скрипты сайта отправляют часов через 6-7. Это по дате создания письма
 
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
{
   ResetLastError();
   int handle = FileOpen("Export.csv", FILE_WRITE|FILE_CSV);
   
   if(handle != INVALID_HANDLE)
   {
      FileSeek(handle, 0, SEEK_END);
      FileWrite(handle, TimeGMT(), Symbol(), EnumToString(_Period));
      FileClose(handle);
      
      Comment("FileOpen OK");
      Sleep(1000);
      Comment("");
   }
   else 
      Print("Операция FileOpen неудачна, ошибка ",GetLastError());

  
}//End OnStart

3391
При повторном запуске скрипта SEEK_END не смещает позицию.
SEEK_SET так же не работает, плюс после SEEK_SET перестаёт открываться созданный файл через навигатор МЕ
Или я что не так делаю?

Всегда одна строчка в файле

2022.08.14 16:28:37     LJ      PERIOD_M1
 
Roman #:

3391
При повторном запуске скрипта SEEK_END не смещает позицию.
SEEK_SET так же не работает, плюс после SEEK_SET перестаёт открываться созданный файл через навигатор МЕ
Или я что не так делаю?

Всегда одна строчка в файле

добавьте флаг FILE_READ

 
Maxim Kuznetsov #:

добавьте флаг FILE_READ

Действительно, странное поведение. 

 
Здравствуйте. В подсказке пишет не 

bands_period

 а    ma_period. В shift то-же



 

В чем причина ошибки компиляции?  (в c++ компилируется без ошибок)

b3401

class A {};
template <typename T> class B {};

class C
  {
public:
   template <typename Y>
   void              func(B<Y> & p) {}
  };

void OnStart()
  {
   B<const A> b;
   C c;
   c.func(b);     //compile error
//'b' - parameter conversion not allowed
//void C::func(C::B<Y>&)
  }
 
Приветствую, подскажите пожалуйста, почему не могу подписаться на счёт трейдера?

Пишет "Подписка не удалась"
В учётку вошёл на МТ-4, баланс там виден. Подскажите пожалуйста, что может быть не так?