Выпущена бета-версия MetaTrader 4 Build 529 с новым компилятором - страница 49

 
Interesting:
А без кода как помочь?

кода 200 строк, + он неоткомментированный вообще (переводил функцию и обращение к ней на рельсы ООП).

Думал что кто-то сталкивался с похожим (сам подозреваю конструкторы и деструкторы, у меня они и в базовом классе и в потомках по умолчанию (совсем не заданы))

если надо, выложу и код, все равно комментить буду для себя,

но это уже завтра, а сегодня я спать.

 

При вызове ShellExecuteA из shell32.dll появляется такое сообщение:

Не могли бы назвать «shell32.dll :: ShellExecuteA, DLL не допускается
Нарушение прав доступа напишите 0x00000000

Вызов делаю так:

#import "shell32.dll"
int ShellExecuteA(int a0,string a1,string a2,string a3,string a4,int a5);
#import

PS. забыл включить разрешение на вызов dll, но если включить разрешить dll то при запуске тестера, терминал вылетает

 
VOLDEMAR:

Оппа, голос из прошлого .... А нет случаем первого билда ?

Билд 541 естественно.
 
Barbarian:

При вызове ShellExecuteA из shell32.dll появляется такое сообщение:

Не могли бы назвать «shell32.dll :: ShellExecuteA, DLL не допускается
Нарушение прав доступа напишите 0x00000000

Вызов делаю так:

#import "shell32.dll"
int ShellExecuteA(int a0,string a1,string a2,string a3,string a4,int a5);
#import

PS. забыл включить разрешение на вызов dll, но если включить разрешить dll то при запуске тестера, терминал вылетает


Строки теперь юникодные.

Вам необходимо использовать юникодный вариант функции

#import "shell32.dll"
int ShellExecuteW(int a0,string a1,string a2,string a3,string a4,int a5);
#import

 
ALXIMIKS:

кода 200 строк, + он неоткомментированный вообще (переводил функцию и обращение к ней на рельсы ООП).

Думал что кто-то сталкивался с похожим (сам подозреваю конструкторы и деструкторы, у меня они и в базовом классе и в потомках по умолчанию (совсем не заданы))

если надо, выложу и код, все равно комментить буду для себя,

но это уже завтра, а сегодня я спать.


Если нет ничего секретного, то выложите код и шаги для воспроизведения или в сервисдеск. Спасибо

 
stringo:

Строки - юникодные.

Вам необходимо использовать юникодный вариант функции

Мда, не все так просто, похоже еще нужно писать L перед строковыми литералами.
 
digits:

помогите понять, почему этот код компилирован на 509 работает при вызове из эксперта

в эксперте код вызывается и обрабатывается так:

но если код скомпилирован в МЕ от билда 540 тогда лог файл эксперта пишет:

и эксперт не работает правильно или вообще не работает.


Пробовали в 541 билде?

На основе ваших исходников попытались воспроизвести у себя пока безуспешно. Можете выложить в сервисдеск все исходники и подробности (ОС, символ, брокер, папка установки, права и т.п.)

 
ALXIMIKS:

Подскажите возможную причину креша))

В индикаторе оформил основную расчетную функцию через ООП (изучаю несколько дней только).

Все работает нормально (на 3000 барах скорость расчета возрасла в 2-3 раза).

Вот только при попытке запустить 2 индикатора - вылетает оно и все падает ......


С этим лучше сразу в сервисдеск со всеми исходниками и описанием.
 
void OnStart()
{
//---
//+------------------------------------------------------------------+
//| Скрипт выводит информацию об инструменте |
//+------------------------------------------------------------------+
Print("Symbol=",Symbol());
Print("Размер пункта в валюте котировки=",MarketInfo(Symbol(),MODE_POINT));
Print("Минимальный шаг изменения цены инструмента в пунктах=",MarketInfo(Symbol(),MODE_TICKSIZE));
}

LOG:

2013.11.15 12:43:11.716 ttt EURUSD,M1: removed

2013.11.15 12:43:11.716 ttt EURUSD,M1: Минимальный шаг изменения цены инструмента в пунктах=1e-005.0

2013.11.15 12:43:11.716 ttt EURUSD,M1: Размер пункта в валюте котировки=1e-005.0

2013.11.15 12:43:11.716 ttt EURUSD,M1: Symbol=EURUSD

2013.11.15 12:43:11.707 ttt EURUSD,M1: loaded successfully


 
HIDDEN:
void OnStart()
{
//---
//+------------------------------------------------------------------+
//| Скрипт выводит информацию об инструменте |
//+------------------------------------------------------------------+
Print("Symbol=",Symbol());
Print("Размер пункта в валюте котировки=",MarketInfo(Symbol(),MODE_POINT));
Print("Минимальный шаг изменения цены инструмента в пунктах=",MarketInfo(Symbol(),MODE_TICKSIZE));
}

LOG:

2013.11.15 12:43:11.716 ttt EURUSD,M1: removed

2013.11.15 12:43:11.716 ttt EURUSD,M1: Минимальный шаг изменения цены инструмента в пунктах=1e-005.0

2013.11.15 12:43:11.716 ttt EURUSD,M1: Размер пункта в валюте котировки=1e-005.0

2013.11.15 12:43:11.716 ttt EURUSD,M1: Symbol=EURUSD

2013.11.15 12:43:11.707 ttt EURUSD,M1: loaded successfully


Смущает научный формат вывода данных?

1e-005.0 = 0.00001. Пятизнак, все-таки.
Для печати в представлении с десятичной точкой нужно использовать DoubleToStr внутри Print или перейти к новой версии Print: PrintFormat.

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