Особенности языка mql5, тонкости и приёмы работы - страница 129

 
fxsaber:

В ME есть комбинация ALT+V, где можно видеть предыдущие значения системного буфера обмена. Даже если что-то скопировали из браузера, а ME работал фоном, ME это увидит и запомнит.

Грубо говоря, ME видит многое из того, что делаете на компе. Например, вставляете через буфер пароль к счету - он попадет в историю ME.

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

 
Vitaly Muzichenko:

Ого, а Я пароли от криптобирж копирую. Насколько это пагубно для меня?

Например, если даете доступ к своему компу со стороны (TeamViewer и т.д.), желательно перед этим выйти из всех ME и почистить буфер (скопировать туда мусор).

 
fxsaber:

В ME есть комбинация ALT+V, где можно видеть предыдущие значения системного буфера обмена. Даже если что-то скопировали из браузера, а ME работал фоном, ME это увидит и запомнит.

Грубо говоря, ME видит многое из того, что делаете на компе.

Спасибо. Интересно. Стоит добавить, что сохраняется не только то, что было скопировано в МЕ, но и всё во всех приложениях. Конкретно надо проверять на какую глубину сохраняется, сейчас проверял, увидел три скопированных текста, два из МЕ и один из текста в сообщении на этом форуме.

ps; Даже два из текста на форуме


 
Ну и на всякий случай смотрите, чтобы ничего не попало в поиск и замену. В metaeditor.ini это
FindWhatX=text
ReplaceWithX=text
 
fxsaber:

В ME есть комбинация ALT+V, где можно видеть предыдущие значения системного буфера обмена. Даже если что-то скопировали из браузера, а ME работал фоном, ME это увидит и запомнит.

Грубо говоря, ME видит многое из того, что делаете на компе. Например, вставляете через буфер пароль к счету или личному кабинету другого ресурса - он попадет в историю текущей сессии ME.

Интересная особенность. Хорошо, что в памяти хранится буфер, а не в файле.

 

Вот ещё одна тонкость.

Компилятор не ругается на одноимённые функции с разными входными параметрами, даже если они не принадлежать классу.

void OnStart()
{
 f1("28-70 ОГО");
 f1(1.01);
}

void f1(string s)
{
 Print(__FUNCSIG__, " ", s);
}

void f1(double s)
{
 Print(__FUNCSIG__, " ", s);
}

Результат выполнения

2019.03.10 10:34:45.566 !00 (EURUSD,H4) void f1(string) 28-70 ОГО
2019.03.10 10:34:45.566 !00 (EURUSD,H4) void f1(double) 1.01
 

Мультибуфер здорово ускоряет работу в редакторе и безопасен.

Он ничего не пишет на диск и держит данные только в памяти.

 
Alexey Viktorov:

Вот ещё одна тонкость.

Компилятор не ругается на одноимённые функции с разными входными параметрами, даже если они не принадлежать классу.

Результат выполнения

Это обычная перегрузка функций. Всё стандартно.

 
Artyom Trishkin:

Это обычная перегрузка функций. Всё стандартно.

Я почему-то думал что перегрузка работает только в классах. Хотелось-бы думать что я не один такой. Может кому-то это поможет. ))))

 
Кеш Оптимизатора можно выключить следующим приемом
// Способ выключить кеш оптимизатора
sinput bool inCache = true; // Выключить кеш оптимизатора

input int Range = 0; // 0..10

void OnTesterInit( void )
{  
  if (inCache)
  {
    MathSrand((int)TimeLocal());
    
    ParameterSetRange("inCache", false, MathRand(), 0, 0, 0);    
  }
}

void OnTesterDeinit( void ) {}

void OnTesterPass( void )
{
  static int i = 0;
  
  Print(i++); // Признак того, что кеш выключен.
}

double OnTester( void )
{
  if (MQLInfoInteger(MQL_OPTIMIZATION))
  {
    uchar Data[];

    FrameAdd(NULL, 0, 0, Data);
  }

  return(0);
}


Конечно, лучшим решением было бы, если бы разработчики дали OptimizationCacheOff().

ЗЫ Обратите внимание, что bool входной параметр на самом деле является long. Поэтому bool inCache = 1 и bool inCache = 2 - разные входные параметры, хоть и равны true в обоих случаях.

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