![Руководство по написанию DLL для MQL5 на Delphi Руководство по написанию DLL для MQL5 на Delphi](https://c.mql5.com/36/57/rukovodstvo-po-napisaniu-dll-dlya.jpg)
- www.mql5.com
Подскажите пожалуйста, как педедать строку через параметр из dll? Через string или char[] c длиной... Перепробовал кучу вариантов, в том чилсе и найденых тут, но ни один не сработал...
наиболее надёжный способ - через заранее в MQL сделанный буфер.
//C
int my_get_string(wchar_t *buffer,int buf_size)
{
/// копируем данные в указанный буфер, не более buf_size включая завершающий 0
/// возвращаем кол-во скопированных символов
return copiedSymbol;
}
// MQL
#import my.dll
int my_get_string(ushort &[],int);
#import
string get_string() {
ushort data[255];
int count=my_get_string(data,ArraySize(data));
if (count) {
return CharArrayToString(....)
}
return "";
}
наиболее надёжный способ - через заранее в MQL сделанный буфер.
//C
int my_get_string(wchar_t *buffer,int buf_size)
{
/// копируем данные в указанный буфер, не более buf_size включая завершающий 0
/// возвращаем кол-во скопированных символов
return copiedSymbol;
}
// MQL
#import my.dll
int my_get_string(ushort &[],int);
#import
string get_string() {
ushort data[255];
int count=my_get_string(data,ArraySize(data));
if (count) {
return CharArrayToString(....)
}
return "";
}
В принципе, так и думал, но получается не очень элегантное решение. Есть конечно вариант через двойной указатель, но так же такое себе...
В принципе, так и думал, но получается не очень элегантное решение. Есть конечно вариант через двойной указатель, но так же такое себе...
в 90% случаев строки приходится ещё и перекодировать из транспортной utf-8 (и типичной для C/C++).
Так что обмен через массив самое то - и правообладание над объектами (строками в данном случае) не нарушается и перекод делается
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования