Новая бета-версия MetaTrader 4 Client Terminal build 660: виртуальный хостинг, web-запросы, работа с сигналами из MQL-программ и стакан цен - страница 4

 
Возможно ли увеличить кол-во символов в поле "Имя"? При большой вложенности обрезает как имя файла так и имя файла в созданном файле.принт
 

Раньше работало - теперь нет. Задача: передать значение строковой переменной из исполняемого файла в компилируемую библиотеку.

Скрипт:

//+------------------------------------------------------------------+
//|                                                  Test_Import.mq4 |
//+------------------------------------------------------------------+
#property strict
#import "Test\Test_Import.ex4"
    void fSet_NameEXP (string fs_NameEXP);// имя вызывающего библиотеку эксперта
#import
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
{
    string ls_ExpName;
//---
    StringInit (ls_ExpName, 100, 0);
    ls_ExpName = WindowExpertName();
    fSet_NameEXP (ls_ExpName);
}
//+------------------------------------------------------------------+

Библиотека:

//+------------------------------------------------------------------+
//|                                                  Test_Import.mq4 |
//+------------------------------------------------------------------+
#property library
#property strict
string    bs_NameEXP;
//+------------------------------------------------------------------+
//| My function                                                      |
//+------------------------------------------------------------------+
void fSet_NameEXP (string fs_NameEXP)
{
    StringInit (bs_NameEXP, 100, 0);
    bs_NameEXP = fs_NameEXP;
    Print ("NameExpert - ", bs_NameEXP);
}
//+------------------------------------------------------------------+

Лог:

2014.06.20 14:10:09.819    Script Test_Import EURUSD.GI,M1: removed
2014.06.20 14:10:09.818    Test_Import EURUSD.GI,M1: uninit reason 0
2014.06.20 14:10:09.818    unresolved import function call
2014.06.20 14:10:09.818    Cannot call 'Test\Test_Import.ex4::fSet_NameEXP', 'Test\Test_Import.ex4' is not loaded
2014.06.20 14:10:09.817    Test_Import EURUSD.GI,M1: initialized
2014.06.20 14:10:09.789    Script Test\Test_Import EURUSD.GI,M1: loaded successfully

Что делаю не так?

P.S. Терминал 4.654. Win7-x64.

 
TarasBY:

Раньше работало - теперь нет. Задача: передать значение строковой переменной из исполняемого файла в компилируемую библиотеку.

Скрипт:

Библиотека:

//+------------------------------------------------------------------+
//|                                                  Test_Import.mq4 |
//+------------------------------------------------------------------+
#property library
#property strict
string    bs_NameEXP;
//+------------------------------------------------------------------+
//| My function                                                      |
//+------------------------------------------------------------------+
void fSet_NameEXP (string &fs_NameEXP)
{
    StringInit (bs_NameEXP, 100, 0);
    bs_NameEXP = fs_NameEXP;
    Print ("NameExpert - ", bs_NameEXP);
}
//+------------------------------------------------------------------+
Лог:

Что делаю не так?

P.S. Терминал 4.654. Win7-x64.

Может так работать будет?
 
Zhunko:
Может так работать будет?
Неа. По ссылке и раньше не работало и теперь не работает. Кстати, "те же яйца" и при передаче строкового массива.
 
TarasBY:
...

Что делаю не так?

P.S. Терминал 4.654. Win7-x64.


При компиляции библиотеки EX4 Вы используете #property strict, поэтому для экспортируемых функций обязательно добавлять модификатор export

//+------------------------------------------------------------------+
//|                                                  Test_Import.mq4 |
//+------------------------------------------------------------------+
#property library
#property strict
string    bs_NameEXP;
//+------------------------------------------------------------------+
//| My function                                                      |
//+------------------------------------------------------------------+
void fSet_NameEXP (string fs_NameEXP) export
{
    StringInit (bs_NameEXP, 100, 0);
    bs_NameEXP = fs_NameEXP;
    Print ("NameExpert - ", bs_NameEXP);
}
//+------------------------------------------------------------------+
 
mql5:

При компиляции библиотеки EX4 Вы используете #property strict, поэтому для экспортируемых функций обязательно добавлять модификатор export


Спасибо. Так работает!!! Нашёл в справке об этом модификаторе. Но там никакой упоминания/привязки об/к #property strict нет.
 

А скажите, пожалуйста...

Теперь нельзя объявить #define MAGIC 123 - много ошибок. Т.е. MAGIC теперь должен быть строго int?    (int MAGIC=123;)

Собссно, вопрос не по нему, int, так int. Волнует другое:

#define BUY  OP_BUY

#define SEL  OP_SELL

Будут ли продолжать работать такие определения?

if(OrderType()==BUY) ...

if(OrderType()==SEL) ... 

 
Alexey_74:

А скажите, пожалуйста...

Теперь нельзя объявить #define MAGIC 123 - много ошибок. Т.е. MAGIC теперь должен быть строго int?    (int MAGIC=123;)

...

А что за ошибки ? У меня не наблюдается.
 

Если  #define MAGIC 123 

то компилятор требует в OrderSend(sym,op,lот,price,30,stop,take,"",MAGIC)  поставить ";" перед MAGIC'ом

Если  int MAGIC=123;

то сразу всё скомпилировалось. 

 

МТ4 билд 660. МЕ билд 946 

 

А вот интересно, сейчас только обратил внимание. МТ4 660 от 13.06.2014, а МЕ 946 от 30.05.2014

Так и должно быть, или мой софт недообновился?