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

[Удален]  
Roman:

Длина а не размер! Длина в символах, размер в байтах.
Проверил, после получения строки из 164 символов, да длина так же осталась 200.
Какие мысли по этому поводу?

Почему так происходит, уже объяснял выше.

 
Koldun Zloy:

То что Вы хотите сделать, на самом деле не так сложно.

Ну так подскажите раз не так сложно.
Или вы считаете что это нормальное поведение?

[Удален]  
Roman:

Ну так подскажите раз не так сложно.
Или вы считаете что это нормальное поведение?

То есть, Вы даже не планируете ни в чём разбираться, просто дай Вам готовый рецепт и всё?

Я не понимаю, зачем Вам заниматься программированием, если для Вас это в тягость, но это Ваше дело.


Как Вы думаете, захочет ли кто-то Вам помогать, если Вы задаёте вопрос, и не хотите показывать подробный воспроизводимый код,

то что Вам пишут или не читаете, или спорите с теми, кто знает намного больше?


Поэтому, готового рецепта не будет. Напишу общий принцип получения строки из DLL. Код напишете сами, если считаете себя программистом.


1. В MQL создаёте массив ushort.

2. Инициализируете его.

3. Передаёте массив и его размер в DLL.

4. В DLL копируете строку в этот массив, используя функцию wmemcpy_s().

5. Возвращаете из DLL длину скопированной строки.

6. В MQL создаёте строку из массива, используя функцию ShortArrayToString().

 
Комментарии, не относящиеся к этой теме, были перенесены в "Вопросы от начинающих MQL4 MT4 MetaTrader 4".
 

На одном из серверов (не MQ) МТ5 сходит с ума - грузит проц на 100% и интенсивно выводит в лог такие сообщения по разным инструментам:

HistoryBase постоянное самопроизвольное обновление

Графики моргают. Работать невозможно.

Есть ли возможность локально это пофиксить или единственный выход - ждать пока на сервере, видимо, не закончат какие-то игры?

 
Koldun Zloy:

То есть, Вы даже не планируете ни в чём разбираться, просто дай Вам готовый рецепт и всё?

Я не понимаю, зачем Вам заниматься программированием, если для Вас это в тягость, но это Ваше дело.

Как Вы думаете, захочет ли кто-то Вам помогать, если Вы задаёте вопрос, и не хотите показывать подробный воспроизводимый код,

то что Вам пишут или не читаете, или спорите с теми, кто знает намного больше?

Поэтому, готового рецепта не будет. Напишу общий принцип получения строки из DLL. Код напишете сами, если считаете себя программистом.


1. В MQL создаёте массив ushort.

2. Инициализируете его.

3. Передаёте массив и его размер в DLL.

4. В DLL копируете строку в этот массив, используя функцию wmemcpy_s().

5. Возвращаете из DLL длину скопированной строки.

6. В MQL создаёте строку из массива, используя функцию ShortArrayToString().

Да где вы увидели тут спор? Идёт рабочее обсуждение, не нужно переиначивать смысл в курятник, с высокомерным пафосом.
Не кто готового от вас не чего не просил. Думал вы с указателем знаете решение, ан нет, ошибся.
Это вы не читаете тему, тут давно уже о массивах была речь, и все прекрасно об этом знают.
И к массивам я давно уже склоняюсь. Но раз в mql есть string, почему бы его не использовать напрямую.
Вот как раз за баг в mql-овском string, копирования в него указателя, тут и идёт речь.
Я вам больше скажу, что не только через ushort можно решить всё. Вариантов с массивами много.
Но в моём случае не хочется использовать массивы, не всегда это рационально по структуре кода.
И тем более когда есть mql-овский string, с которым можно работать на прямую, но который должен работать корректно.

 

Всем доброго времени суток! Подскажите, пожалуйста, в чём может быть ошибка? При попытке присвоить указателю на функцию   адрес функции, определённой в другом файле, компилятор выдаёт ошибку "pointer to this function type is not supported yet".

#include <CPositionManagement.mqh>
CPositionManagement posManager;
typedef ulong(*PtrSendOrder)(double,double,string,double,double,datetime,const string,bool);
...
PtrSendOrder ptrBuyFunc=NULL;
PtrSendOrder ptrSellFunc=NULL;
ptrBuyFunc=posManager.SendBuyStop;   // pointer to this function type is not supported yet
ptrSellFunc=posManager.SendSellStop; // pointer to this function type is not supported yet

При этом, если те же функции определить в mq5-файле (где и происходит присваивание), то никаких проблем не возникает. Обращение к адресу через оператор разрешения контекста тоже проблему не решает ( PtrSendOrder ptrBuyFunc=CPositionManagement::SendBuyStop).

[Удален]  
Roman:

Да где вы увидели тут спор? Идёт рабочее обсуждение, не нужно переиначивать смысл в курятник, с высокомерным пафосом.
Не кто готового от вас не чего не просил. Думал вы с указателем знаете решение, ан нет, ошибся.
Это вы не читаете тему, тут давно уже о массивах была речь, и все прекрасно об этом знают.
И к массивам я давно уже склоняюсь. Но раз в mql есть string, почему бы его не использовать напрямую.
Вот как раз за баг в mql-овском string, копирования в него указателя, тут и идёт речь.
Я вам больше скажу, что не только через ushort можно решить всё. Вариантов с массивами много.
Но в моём случае не хочется использовать массивы, не всегда это рационально по структуре кода.
И тем более когда есть mql-овский string, с которым можно работать на прямую, но который должен работать корректно.

 mql-овский string работает так как задумано. Вы слишком много от него хотите.

Я конечно знаю как можно использовать string в этом случае, но из-за своего пафосного высокомерия ничего не скажу.

 
Логично, чтобы он работал корректно.
Надеюсь уважаемые разработчики услышали проблему.
Файлы:
458.png  71 kb
[Удален]  
Roman:
Логично, чтобы он работал корректно.
Надеюсь уважаемые разработчики услышали проблему.

Он работает корректно.

И в этой теме достаточно информации, чтобы сделать правильно.