Присоединить MySQL к MQ4 - страница 4

 

если функция возвращает указатель, то это обычное int (4 байтовое) знаение

в дальнейшем этот int используем в memcpy или strcpy (если знаем, что это NULL-terminated строка)

#import "msvcrt.dll"
        int memcpy(uchar &Destination[], uchar &Source[], int Length);
        int memcpy(uchar &Destination[], int Source, int Length);
        int memcpy(int Destination, uchar &Source[], int Length);
#import

таким образом применительно к нашим баранам, нам понадобятся функции для получения длин Length.

это

mysql_num_fields

mysql_fetch_lengths

 
sergeev:

таким образом применительно к нашим баранам, нам понадобятся функции для получения длин Length.

это

mysql_num_fields

mysql_fetch_lengths

Для полного понимания (начинающих программистов) информации маловато.

 
HIDDEN:

Для полного понимания (начинающих программистов) информации маловато.


ну например? работа какой функции из MySQL вызывает сложности при работе в MQL ?
 
sergeev:

ну например? работа какой функции из MySQL вызывает сложности при работе в MQL ?

Возврат массива данных, думаю эта единственная проблема которую так и не решили в полной мере.

P.S. Опубликуй полный код функции возврата массива данных из базы в MQL4. Я так понимаю, что это удалось сделать.

 
HIDDEN:

Возврат массива данных, думаю эта единственная проблема которую так и не решили в полной мере.

P.S. Опубликуй полный код функции возврата массива данных из базы в MQL4. Я так понимаю, что это удалось сделать.


ну вот смотри, чтоб в дебри далеко не залазить, покажу на примере mysql_get_client_info

она возвращает указатель на NULL-terminated строку (char*)

что мы делаем:

#import "libmysql.dll"
    int mysql_get_client_info(); // функция вернула char*
#import "msvcrt.dll"
    int strcpy(uchar &strDestination[], int strSource); // копируем NULL-строку из source в байтовый массив 
#import

void OnStart()
{
    uchar byte[100]; int ptr;
    ptr=mysql_get_client_info(); // получили указатель на строку
    strcpy(byte, ptr); // скопировали его в массив
    string st=CharArrayToString(byte); Print("client_info="+st); // вывели на печать
}

И всё. АНАЛОГИЧНО все вытягивается и из других функций которые возвращают указатели.

PS
Извини, что не MQL4.

 
sergeev:

И всё.

Так это всё для mql5, а для 4-ки реализация невозможна?
 
HIDDEN:
Так это всё для mql5, а для 4-ки реализация невозможна?

думаю что будет аналогично. только поколдовать с типом в memcpy надо (вместо uchar дать int[] или string& ).
попробуй, если будет результат (или отсутствие) то отпишись
 
sergeev:

думаю что будет аналогично. только поколдовать с типом в memcpy надо (вместо uchar дать int[] или string& ).
попробуй, если будет результат (или отсутствие) то отпишись
Крутил, вертел и так и эдак, у меня ничего не вышло на 4-ке. Иной раз даже терминал вываливается полностью.
 
sergeev:

ну вот смотри, чтоб в дебри далеко не залазить, покажу на примере mysql_get_client_info

она возвращает указатель на NULL-terminated строку (char*)

что мы делаем:

И всё. АНАЛОГИЧНО все вытягивается и из других функций которые возвращают указатели.

PS
Извини, что не MQL4.


Вам удалось получать нормальные результаты из mysql_fetch_row? А то мне внезапно понадобился мускул и как на зло после обновлений терминала мой метод накрылся.
 
Graff:

Вам удалось получать нормальные результаты из mysql_fetch_row? А то мне внезапно понадобился мускул и как на зло после обновлений терминала мой метод накрылся.

да, все работает идеально, но пока сделал только для MQL5

пример работы сверху в моем посте

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