Передача массива string в dll по ссылке - страница 3

 
Graff:

Что-то не работает StringSplit. В Comment выпадает qwe;rty;uio. И как быть с многомерными массивами? Предположим когда qwe - должен находиться в 1м измерении, rty - во 2м и uio - в 3м или когда qwe - 1я строка, rty - 2я, а uio - 3я. Может стоит добавить указатель как распределять инфу в массиве или на количество измерений?

Мне нужно получить из БД массив(пример mydb.fetch_array("SELECT id,title FROM `calendar` limit 30",news);). Как видим должен вернуться 2 мерный массив, содержащий 30 строк, в других случаях размерность может быть любой. Если изменить запрос на "SELECT concat_ws(';',id,title) FROM calendar limit 30", то БД вернет 1 мерный массив, содержащий 30 строк вида 1;AUD AIG Manufacturing Index, 2;JPY Average Cash Earnings y/y и тд. Я планирую получать инфу из БД запросами 2го варианта построчно и загружать их в массив. Сможет ли StringSplit справиться с таким и какие могут быть варианты реализации?

1) StringSplit разбивает строку по коду символа, а не по строке. В приведённом Вами коде имеется предупреждение о конверсии строки в число!
2) Например можно все данные запроса разделить между собой ';', а в MQL программе после использования StringSplit(data,';',array) учитывать, что чётный (начиная с 0,2,4, и т.д) элемент это id, а нечётный (1,3,5) это title для предсоящего id

// тут можно проверить, что количество элементов чётное
int count=ArraySize(a)/2;

for(int i=0;i<count; i++)
  {
   Print(a[i*2],",",a[i*2+1]);
  }

// выведет
// 1,AUD AIG Manufacturing Index
// 2,JPY Average Cash Earnings y/y
// ...

 
mql5:
Нет, управлять памятью из DLL к сожалению никак.

Т.е. передать из MQL в DLL неинициализированный динамический массив (без выделения памяти ArrayResize) и уже в DLL его поресайзить не получится?

P.S. Извиняюсь за некропостинг, но надо ...

 
artemiusgreat:

Т.е. передать из MQL в DLL неинициализированный динамический массив (без выделения памяти ArrayResize) и уже в DLL его поресайзить не получится?

с целью, чтоб назад его прочитать в MQL - не получится.
 
artemiusgreat:

Т.е. передать из MQL в DLL неинициализированный динамический массив (без выделения памяти ArrayResize) и уже в DLL его поресайзить не получится?

Только через реверс инжиниринг в небольшом количестве.