Adjuntar MySQL a MQ4 - página 4

 

si la función devuelve un puntero, es un valor int normal (4 bytes)

además usaremos este int en memcpy o strcpy (si sabemos que es una cadena terminada en NULL)

#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

por lo que, para nuestros carneros, necesitamos funciones para obtener longitudes.

es

mysql_num_fields

mysql_fetch_lengths

 
sergeev:

por lo que para nuestros carneros, necesitaremos funciones para obtener Longitudes.

es

mysql_num_fields

mysql_fetch_lengths

No hay mucha información para una comprensión completa(para programadores principiantes).

 
HIDDEN:

No hay mucha información para entender completamente (programadores principiantes).


Por ejemplo, ¿qué función de MySQL es difícil de trabajar en MQL?
 
sergeev:

Por ejemplo, ¿qué función de MySQL causa dificultades al trabajar en MQL?

Retorno de un array de datos, creo que este es el único problema que no se ha resuelto del todo.

P.D. Publica el código completo de la función para devolver el array de datos de la base de datos en MQL4. Entiendo que era posible hacerlo.

 
HIDDEN:

Retorno de la matriz de datos, creo que este es el único problema que no se ha resuelto del todo.

P.D. Publica el código completo de la función para devolver el array de datos de la base de datos en MQL4. Entiendo que era posible hacerlo.


aquí tienes, para no adentrarme demasiado en el terreno, mostraré con el ejemplo mysql_get_client_info

devuelve un puntero a una cadena terminada en NULL (char*)

que estamos haciendo:

#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); // вывели на печать
}

Y eso es todo. ANALOGAMENTE todo se extrae de otras funciones que devuelven punteros.

PS
Lo siento, no es MQL4.

 
sergeev:

Eso es todo.

¿Entonces todo esto es para mql5, y la implementación es imposible para 4?
 
HIDDEN:
Entonces, ¿todo esto es para mql5, y la implementación es imposible para 4?

Creo que será similar. solo que hay que manipular con el tipo en memcpy (en vez de uchar dar int[] o string& ).
pruébalo, si obtienes resultados (o no) házmelo saber
 
sergeev:

Creo que será lo mismo. sólo que hay que manipular con el tipo en memcpy (en lugar de uchar dar int[] o string& ).
pruébalo, y si obtienes resultados (o no), házmelo saber.
He girado y girado por aquí y por allá, nada me ha funcionado en la 4. A veces incluso el terminal se bloquea por completo.
 
sergeev:

Este es un ejemplo de mysql_get_client_info

devuelve un puntero a una cadena terminada en NULL (char*)

que estamos haciendo:

Y eso es todo. ANALOGAMENTE todo se extrae de otras funciones que devuelven punteros.

PS
Lo siento, no es MQL4.


¿Pudo obtener resultados normales de mysql_fetch_row? De repente necesitaba un músculo y, por suerte, tras una actualización del terminal, mi método se estropeó.
 
Graff:

¿Has conseguido obtener resultados normales con mysql_fetch_row? De repente necesitaba un músculo y como mucho después de las actualizaciones del terminal se me fastidió el método.

Sí, todo funciona perfectamente, pero hasta ahora sólo lo he hecho para MQL5

Un ejemplo de cómo funciona desde arriba en mi post

Razón de la queja: