Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Сервис Фриланс: безопасный способ заказать робота. Попробуй сам!
Sergey Sartakov
1286
Sergey Sartakov 2013.05.14 13:04 

Пусть имеем глобальные переменные:

string gs_Str1 = "   ";

string gs_Str2 = "   ";

и такую вот импортируемую функцию:

int Function(string  gs_Str1, gs_Str2);

 

Вот эта функция в DLL:

int  Function(char*  gs_Str1, char*  gs_Str2);

не поверите, но оказывается  эти указатели указывают на одно и то же место, т.е.  gs_Str1 = gs_Str1 !

 

Но если в МТ4 имеем, к примеру:

string gs_Str1 = "                    ";

string gs_Str2 = "   "; 

 

то все нормально... 

PapaYozh
3768
PapaYozh 2013.05.14 13:08  
more:

Пусть имеем глобальные переменные:

string gs_Str1 = "   ";

string gs_Str2 = "   ";

и такую вот импортируемую функцию:

int Function(string  gs_Str1, gs_Str2);

 

Вот эта функция в DLL:

int  Function(char*  gs_Str1, char*  gs_Str2);

не поверите, но оказывается  эти указатели указывают на одно и то же место, т.е.  gs_Str1 = gs_Str1 !

 

Но если в МТ4 имеем, к примеру:

string gs_Str1 = "                    ";

string gs_Str2 = "   "; 

 

то все нормально... 

 

 

Это известная багофича - результат работы оптимизатора кода при компиляции.

Vadim Zhunko
5219
Vadim Zhunko 2013.05.14 13:24  
Чтобы указатели были разные надо инициализировать разными значениями.
Sergey Sartakov
1286
Sergey Sartakov 2013.05.14 23:45  
Zhunko:
Чтобы указатели были разные надо инициализировать разными значениями.

понял уже, после того как день  потерял...
/
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий