Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Имитация старых строковых массивов Ansi сложна, но все же возможна. (Это зависит от того, насколько хорошо ведет себя DLL, особенно если она передает данные обратно в MQL4, изменяя содержимое массива. Я проверил это только на примере C++ кода внизу, а не на чем-то более реалистичном, как библиотека MySql).
Например, приведенный выше код работает со следующей DLL, которая делает окно сообщения для каждой строки в массиве, а затем меняет строку на противоположную перед возвратом в MT4:
Я просто не могу объяснить, насколько полезны ваши сниппеты. Огромное спасибо! Я пошел дальше и написал обертку MySQL на чистом MQL4 (для версии UNICODE), которая взаимодействует с libmysql.dll (ANSI), используя методы, которые вы упомянули, и методы, которые я нашел в библиотеке EAX MySQL (MQL5).
Я был бы очень признателен, если бы вы взглянули на мой код и дали мне знать о том, что можно улучшить или внести свой вклад в него, так как я уверен, что его можно улучшить.
gchrmt4,
Не могли бы вы показать мне, как я могу передать строку через вызов функции DLL, или указать мне на пример кода?
Мне нужно подтверждение того, что я могу выполнить вызов, например:
#import
int call_a_string_function(string this_is_a_string);
#import
...
...
string foo1 = "это строка";
int retruncode = call_a_string_function(foo1);
тогда как бы выглядел код на C для вышеупомянутой функции? Я просто ищу пример рутины.
например.
int call_a_string_function(char *this_is_a_string);
и т.д.
Некоторые люди говорят, что нужно использовать массив или массив char и т.д. Я ищу некоторые разъяснения. Просто простой пример наилучшего подхода, поскольку вы упомянули об утечке памяти и т.д.
с уважением
горик
gchrmt4,
Не могли бы вы показать мне, как я могу передать строку через вызов функции DLL, или указать мне на пример кода?
Мне нужно подтверждение того, что я могу выполнить вызов, например:
#import
int call_a_string_function(string this_is_a_string);
#import
...
...
string foo1 = "это строка";
int retruncode = call_a_string_function(foo1);
тогда как бы выглядел код на C для вышеупомянутой функции? Я просто ищу пример рутины.
например.
int call_a_string_function(char *this_is_a_string);
и т.д.
Некоторые люди говорят, что нужно использовать массив или массив char и т.д. Я ищу некоторые разъяснения. Просто простой пример наилучшего подхода, поскольку вы упомянули об утечке памяти и т.д.
с уважением
горик
Да, спасибо за это. Действительно хорошо представлено и то, что я ожидал. Однако, похоже, у меня проблемы со строками.
Я создал пример из этого документа на C, например, ниже, чтобы принять строковое значение в качестве входного и записать его в файл:
Я записываю значения в файл для проверки.MQL выглядит следующим образом:
Файл выводится следующим образом:Вот строковые значения: R foooooooooooooooooooooooo1
Он возвращает только "R" или первый символ переданной строки? "foooooooooooooooooooooooo1" был вставлен только для того, чтобы проверить, что я печатаю правильно.
Есть ли у кого-нибудь идеи, что я делаю неправильно?
Да, спасибо за это. Действительно хорошо представлено и то, что я ожидал. Однако, похоже, у меня проблемы со строками.
Я создал пример из этого документа на C, например, ниже, чтобы принять строковое значение в качестве входного и записать его в файл:
<удалено>
Есть ли у кого-нибудь идея, что я делаю неправильно?
Проблема в вашем коде на C, а не в MQL4.
%s в printf() означает "строка Ansi". Вам нужно использовать %ls
Да, спасибо за это. Действительно хорошо представлено и то, что я ожидал. Однако, похоже, у меня проблемы со строками.
Я создал пример из этого документа на C, например, ниже, чтобы принять строковое значение в качестве входного и записать его в файл:
Я записываю значения в файл для проверки.MQL выглядит следующим образом:
Выход файла выглядит следующим образом:Вот строковые значения: R foooooooooooooooooooooooo1
Он возвращает только "R" или первый символ переданной строки? "foooooooooooooooooooooooo1" был вставлен только для того, чтобы проверить, что я печатаю правильно.
Есть ли у кого-нибудь идеи, что я делаю неправильно?
Здравствуйте,
Пожалуйста, используйте кнопку SRC, когда публикуете код. Спасибо.
На этот раз я отредактировал его для вас.
Здравствуйте,
Пожалуйста, используйте кнопку SRC, когда публикуете код. Спасибо.
На этот раз я отредактировал его для вас.
Извините, ребята, я действительно новичок в написании сообщений.
Спасибо за ваш вклад, я действительно благодарен.
Из этого следует, что все существующие примеры не являются точными. Нужно использовать юникод. Поскольку я очень новичок в программировании DLL, я начал с нуля совсем недавно, поэтому я в значительной степени полагался на приведенные примеры. Кроме того, так получилось, что я начал использовать сборку 600 в то же время.
Если вы занимаетесь этим долгое время, я полагаю, что вы полностью осведомлены о ситуации. К сожалению, это не так, я получаю только отрывочную информацию и советы на этом форуме.
Я прошу прощения за свое невежество.
с уважением и благодарностью
Если у кого-нибудь есть предложения, как сделать лучше, пожалуйста, дайте мне знать.
Еще раз благодарю вас.
Если у кого-нибудь есть предложения, как сделать лучше, пожалуйста, дайте мне знать.
Еще раз благодарю вас.