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

 

Созданный другой программой ресурс является read-only?

Документация по MQL5: Программы MQL5 / Ресурсы
Документация по MQL5: Программы MQL5 / Ресурсы
  • www.mql5.com
В данном примере показано как проигрывать звуки из файлов Ok.wav и timeoit.wav, входящих в стандартную поставку терминала. Эти файлы находятся в папке означает папку, из которой запущен клиентский терминал MetaTrader 5.  Программным путем из mql5-программы каталог терминала можно узнать следующим образом: Расположение каталога данных терминала...
 
Это баг?
class A {};

A* a = NULL;

bool b1 = a && true; // OK
bool b2 = true && a; // '&&' - illegal operation use
 
При дебаге
Access violation at 0x000000000000007F write to 0x000000000000007F
   crash -->  memory at 0x000000000000007F is not readable
00: 0x000000000000007F
01: 0x000000013FE278BF
 
ResourceReadImage в MT4 с таким багом, что невозможно прочесть ресурс
#property strict

class RESOURCE
{
public:
  const string Name;

  RESOURCE( const string sName = __FILE__ ) : Name("::" + sName )
  {
  }

  ~RESOURCE( void)
  {
    ::ResourceFree(this.Name);
  }

  virtual bool Set( const uint &Data[], const uint Width = 1, const ENUM_COLOR_FORMAT ColorFormat = COLOR_FORMAT_XRGB_NOALPHA ) const
  {
    return(::ResourceCreate(this.Name, Data, Width, (Width == 0) ? ::ArraySize(Data) : ::ArraySize(Data) / Width, 0, 0, Width, ColorFormat));
  }

  int Get( uint &Data[] ) const
  {
    uint Width;
    uint Height;

    return(::ResourceReadImage(this.Name, Data, Width, Height) ? ::ArraySize(Data) : 0);
  }
};

void OnStart()
{
  RESOURCE Resource;
  
  uint DataIn[] = {0};  
  Resource.Set(DataIn);
   
  uint DataOut[];
  Resource.Get(DataOut);
  
  Print(DataOut[0]); // MT5x64 (build 1881) - 0, MT4 (build 1126) - 4278190100 (случайные значения)
}


ResourceSave пишет правильно, а вот ResourceReadImage - один большой баг. Возможно ли исправить? В MT5x32 не проверял...

 

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Ошибки, баги, вопросы

fxsaber, 2018.09.17 18:11

При дебаге
Access violation at 0x000000000000007F write to 0x000000000000007F
   crash -->  memory at 0x000000000000007F is not readable
00: 0x000000000000007F
01: 0x000000013FE278BF

Это очень странный краш, т.к в MT5 связан с #property strict. Воспроизведение (запускать в дебаг-режиме)

#property strict // Без этой строки все норм.

#include <fxsaber\TradeTransactions\ResourceData.mqh> // https://www.mql5.com/ru/code/22166

void OnStart()
{
  const RESOURCEDATA<MqlTick> Resource("::Test");
  MqlTick Ticks[1];
  
  SymbolInfoTick(_Symbol, Ticks[0]);
  Resource = Ticks;    
}
 

Прошу помощи. Нужно в MT4 внутри Терминала передавать из одной проги в другую массивы данных. В MT5 использовал для этого ресурсы, но в MT4 этот метод не получится реализовать, пока не исправят баг там.

C DLL вариантов, конечно, полно, но нужно без DLL. Через файлы можно, не издеваясь над SSD. А другие возможности есть передать данные внутри Терминала? Глобальные не подходят, т.к. данных много. 

Похоже, что никак.

 
fxsaber:

C DLL вариантов, конечно, полно, но нужно без DLL.

совсем без длл или без самописных?

в порядке бреда могу предложить через канву )
 
TheXpert:

совсем без длл или без самописных?

Совсем.

в порядке бреда могу предложить через канву )

Это не бред, а рабочий вариант, но только для пятерки.

 
fxsaber:

C DLL вариантов, конечно, полно, но нужно без DLL. Через файлы можно, не издеваясь над SSD. А другие возможности есть передать данные внутри Терминала? Глобальные не подходят, т.к. данных много. 

Похоже, что никак.

а это не подойдет?

https://www.mql5.com/ru/code/818

File Mapping без DLL
File Mapping без DLL
  • www.mql5.com
Мониторинг котировок (пример для маппинга) Пример использования DLL для работы с функциями File Mapping. В данном примере запущенный эксперт создает виртуальный файл в памяти и начинает обновлять в нем котировку символа. При запуске экспертов в других терминалах, эти эксперты открывают созданный файл и аналогично начинают обновлять свои...
 
Igor Makanu:

а это не подойдет?

https://www.mql5.com/ru/code/818

#import "kernel32.dll"
#import "msvcrt.dll"