Обновление платформы MetaTrader 4 билд 625: Журналы в MetaTrader Market и новый MetaViewer - страница 6

 
Спасибо! Теперь понятно!
 

Похоже, переехали сюда? Продублирую вопрос тут. Очень(!) хотелось бы услышать комментарии.

https://forum.mql4.com/ru/60982/page106#932718

https://forum.mql4.com/ru/60982/page106#932778

 
Alexey_74:

Похоже, переехали сюда? Продублирую вопрос тут. Очень(!) хотелось бы услышать комментарии.

https://forum.mql4.com/ru/60982/page106#932718

https://forum.mql4.com/ru/60982/page106#932778


В 625 билде такое же поведение?Можете приложить исходники и написать в сервис деск?
 

Разработчикам:

Компилятор (не терминал) 625-й версии неправильно принимает строки из DLL.

Он их просто не принимает.

Всё работало 2 года подряд, при переходе на 600-й билд подправил пару строк, перевёл на UniCode, всё работало Ок.

Текст проги простейший: проверяется внутреннее имя DLL, - в самой DLL статическая строка копируется wcscpy, примерно так:

//--------------- Classic C ------------------------------------
typedef         wchar_t                                         mt4_char;
typedef wchar_t*                                                mt4_string;

#define PROJECT_NAME_STRING                                     L"Graalino"

DLL_NO_EXPORT_DATA mt4_string Global_Internal_Name_String = PROJECT_NAME_STRING;


Dll_Internal_Name
(
   mt4_string Ret_String
)
{
        Call wcscpy (Ret_String, Global_Internal_Name_String);
        Return ;
}

// ---------------MQL4 ------------------------------------------------------
static string Project_Name_Static = "Graalino";

        //..............................................................................
        //....................[ VALIDITY CHECK ]........................................
        //..............................................................................
        string Inner_Name_Ex4 = Project_Name_Static;
        string Inner_Name_Dll = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
        Dll_Internal_Name (Inner_Name_Dll);
        if (Inner_Name_Dll != Inner_Name_Ex4)
        {
                Err_Message = " ERROR: Dll inner name miscompare";
                Print (Err_Message);
                Print ("Inner Name in DLL = ", Inner_Name_Dll);
                Print ("Inner Name in Ex4 = ", Inner_Name_Ex4);
                Comment_String = Comment_String + Err_Message;
                Comment (Comment_String);
                Is_Dll_Name_Valid = FALSE;
                return (1);
        }
То же самое, НО скомпилированное командным 887-м компилятором MQL - РАБОТАЕТ, как надо.
Кстати, где ОН, командный компилятор? В 625-м билде его ведь нет - вообще.
 
VOLDEMAR:

Заявка Errors, MetaTrader 4, Открыта, Начата: 2014.01.13 13:59, #928691

Считаю данный момент багом или как минимум не правильным.

При запросе времени из под Х координаты в будущем время возвращается не правильное .

}

До сих пор не привета не ответа ))))


Нельзя со 100-процентной достоверностью рассчитать время в будущем. Из-за возможного отсутствия некоторых баров. Это уже обсуждали-переобсуждали
 
Кстати, где ОН, командный компилятор? В 625-м билде его ведь нет - вообще. Куды он пропал?
 
AlexEro:

Разработчикам:

терминал 625-й версии неправильно принимает строки из DLL.

Он их просто не принимает.

Всё работало 2 года подряд, при переходе на 600-й билд подправил пару строк, перевёл на UniCode, всё работало Ок.

Текст проги простейший: проверяется внутреннее имя DLL, - в самой DLL статическая строка копируется wcscpy, примерно так:


При объявлении в MQL импорта функции DLL, параметр функции объявлен как ссылка на строку?
 
mql5:

При объявлении импорта в MQL параметр объявлен как ссылка?

// ------ Dll-General-005.mqh ------------------

#import "Graalino-v-1-60.dll"

void Dll_Internal_Name (string Ret_String);

 
При переходе на новый бильд перестала работать генетика в тестере. При постановке соответствующей галочки и старте оптимизации терминал "думает" секунд 10-20, потом закрывается. ШО ДЕЛАТЬ., кто знает? Убираю генетику - всё работает. В советнике ошибок нет (ни одной).
 
AlexEro:

// ------ Dll-General-005.mqh ------------------

#import "Graalino-v-1-60.dll"

void Dll_Internal_Name (string Ret_String);




Для получения значений строк из DLL через параметры используйте ссылки:

void Dll_Internal_Name(string &Ret_String);
Причина обращения: