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

 
Vladimir Simakov #:

И еще. string - это некий объект. ИМХО конечно, но там, что-то типа указателя на память в куче и размера строки.

Если у Вас будут не предположения, а доказательства, то сообщите

 
Вообще убрал memсpy из примера, чтобы оппоненты на него не ссылались:
//c.cpp
void f( void* ) {}
//c.mq5
#import "c.dll" 
    void f( string& );
#import
void OnStart()
{
    string text = "ABCDEFG";
    f( text );
}
Результат тот же: 1 leaked strings left
 
A100 #:
Вообще убрал memcpy из примера, чтобы оппоненты на него не ссылались: Результат тот же: 1 leaked strings left

Среди файлов Include\WinAPI\*.mqh можно в ME поискать строку "string &". После чего попробовать официальные (от MQ) найденные сигнатуры на наличие бага.

 
fxsaber #:

Среди файлов Include\WinAPI\*.mqh можно в ME поискать строку "string &". После чего попробовать официальные (от MQ) найденные сигнатуры на наличие бага.

Я уже по максимуму упростил, а Вы предлагаете усложнить - тут простейшие выкладки пользователи не понимают

Кроме того заглядывал как то в  Include\WinAPI\ там сразу 2 ошибки в описании обнаружил

 
A100 #:

предлагаете усложнить

Предполагал, что "string &" не найду, т.к. везде маячит "const string". Думал, что MQ в курсе особенности. Но увидел, что сами MQ "string &" используют в WinAPI. Поэтому возникло предложение.

 
fxsaber #:

Предполагал, что "string &" не найду, т.к. везде маячит "const string". Думал, что MQ в курсе особенности. Но увидел, что сами MQ "string &" используют в WinAPI. Поэтому возникло предложение.

Предложение хорошее, если бы не одно НО:

Понадобилась мне как то функция GetDlgItemText. Нахожу я ее в  Include\WinAPI\

uint GetDlgItemTextW(HANDLE dlg,int nIDDlgItem,string str,int max);

А она не работает. Долго (!) ищу у себя ошибку, не могу понять в чем дело, а в итоге оказалось, что она не работает только потому, что неправильно записана. Ну ладно, все бывает, все ошибаются. Пишу здесь на сайте об этой ошибке

И что Вы думаете - сейчас посмотрел: Include\WinAPI\winuser.mqh - а все без изменений - как она была лет 5 назад неправильно записана, так и до сих пор все

Так что если исправят утечку памяти - хорошо, а нет - так я уже нашел как обойти это
 
A100 #:
Вообще убрал memсpy из примера, чтобы оппоненты на него не ссылались: Результат тот же: 1 leaked strings left

& убери

то есть или const string & или просто string

// C/C++
#include <string.h>
#include <wchar.h>

#define MQL_API(x) __declspec(dllexport) x __stdcall

MQL_API(long) bred(wchar_t *w)
{
        return wcslen(w);
}

компилим

gcc -o bred.dll -shared bred.c 

используем

#import "bred.dll"
long bred(string s);
#import

void OnStart()
{
   string w="ABCDEF";
   long len=bred::bred(w);
   PrintFormat("length %s = %ld",w,len);
}

и никаких вам leaked strings :-)

 
Maxim Kuznetsov #:

& убери

А Вы уверены что разницу понимаете? Наверное не просто так с & и без const написано

 
Как при использовании WebRequest можно переопределить значение заголовка Accept-Language? Если я передаю в параметр headers значение для этого заголовка, оно конкатенируется со значением по умолчанию. В моем случае по умолчанию передается "ru,en;q=0.5". Мне нужно получить ответ в английской локали, но если в headers я передаю значение "Accept-Language: en;q=1\r\n", то WebRequest в заголовке отправит "ru,en;q=0.5,en;q=1", и в итоге русская локаль будет в приоритете.
 
Доброго дня, 

Возникла такая проблема — на MacOS при открытии маркета в мт5 вылетает полностью терминал, нашел решение у вас на форуме нужно провести «конфигурацию из стартового баннера в логах терминала» не совсем понимаю что это значит пожалуйста объясните понятным языком что мне делать.

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