Получение строк из dll - страница 3

 

Может быть и не в тему, но обсуждение уже было чуток

здесь:

https://www.mql5.com/ru/forum/278199

Как побороть ошибку Cannot find 'Add' in 'Test1.dll' ?
Как побороть ошибку Cannot find 'Add' in 'Test1.dll' ?
  • 2018.09.08
  • www.mql5.com
Все сделал так, как здесь: https://www.mql5.com/ru/articles/249 Ошибка в МТ4: В чем может быть проблема? Раньше вроде бы прокатывало, теперь нет...
 
Все. Уходим. 
 

вопрос конечно более философский, но ЗАЧЕМ ВООБЩЕ ОБРАБОТКА СТРОК на уровне MQL ?

он всё равно с цифрами работает и писать парсеры на нём это очень сильно себя не любить  :-)

сделайте сразу ВСЮ обработку в DLL и отдавайте упакованные структуры - MQL прекрасно с ними действует

 
Извините. Я ушел. 
 
Renat Akhtyamov:

Может быть и не в тему, но обсуждение уже было чуток

здесь:

https://www.mql5.com/ru/forum/278199

вкратце, об чём там ? 5 страниц форума читать это как-то не аллё :-) хотя заведомо известно что пару страниц переспрашивают вопрос

 
Maxim Kuznetsov:

вкратце, об чём там ? 5 страниц форума читать это как-то не аллё :-) хотя заведомо известно что пару страниц переспрашивают вопрос

меня научили уму - разуму ;)

в результате все заработало  с внешней DLL туда и обратно - функции, массивы и прочие прелести

 
Maxim Kuznetsov:

вопрос конечно более философский, но ЗАЧЕМ ВООБЩЕ ОБРАБОТКА СТРОК на уровне MQL ?

он всё равно с цифрами работает и писать парсеры на нём это очень сильно себя не любить  :-)

сделайте сразу ВСЮ обработку в DLL и отдавайте упакованные структуры - MQL прекрасно с ними действует

Я не оч общался из МКЛ с ДЛЛ. С передачей строк проблем не возникало.

А что, если структуры в ДЛЛ и обратно, маршаллинг при этом не нужен? Или он уже встроен в МКЛ?

 
Yuriy Asaulenko:

Я не оч общался из МКЛ с ДЛЛ.

А что, если структуры в ДЛЛ и обратно, маршаллинг при этом не нужен? Или он встроен в МКЛ?

пока в структурах скаляры и фикс.массивы(то есть размер структур const и смещения полей известны)

их можно передавать туда-сюда.

ps/ если структура не имеет внутри строк, динамических [] массивов или экземпляров классов - она легально отображается в "С struct { }"
(ну и обратно так-же)

 
Алексей Тарабанов:

Это как? 

    char* dllPath;
    DWORD dwSizeNeeded;
   
    dwSizeNeeded = GetDllDirectory(0, NULL);
    dllPath = new char[dwSizeNeeded + 1];
    if(dllPath == NULL)
        return -1;
       
    dllPath[dwSizeNeeded] = 0;

    if(GetDllDirectoryA(MAX_PATH, dllPath) != 0)
    {
        cout << "Dll directory: " << dllPath << endl;
    }
    else
    {
        cout << "No dll directory specified, or GetDllDirectory failed." << endl;
    }
   
    delete[] dllPath;


Вот как-то так. Брррр.....

 
Maxim Kuznetsov:

вопрос конечно более философский, но ЗАЧЕМ ВООБЩЕ ОБРАБОТКА СТРОК на уровне MQL ?

он всё равно с цифрами работает и писать парсеры на нём это очень сильно себя не любить  :-)

сделайте сразу ВСЮ обработку в DLL и отдавайте упакованные структуры - MQL прекрасно с ними действует

А что-то изменится, если из dll мне надо будет получать не строку, а допустим массив даблов? Что, указатель на массив даблов компилятор умеет, а указатель на массив чаров - не умеет?

Данных много, размер заранее не известен, так что не вижу вообще никакой разницы, в каком виде их передавать.

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