Attacher MySQL à MQ4 - page 4

 

si la fonction renvoie un pointeur, il s'agit d'une valeur int normale (4 octets).

nous utiliserons ensuite cet int dans memcpy ou strcpy (si nous savons que c'est une chaîne terminée par 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

donc, pour nos béliers, nous avons besoin de fonctions pour obtenir les longueurs.

est

mysql_num_fields

mysql_fetch_lengths

 
sergeev:

donc pour nos béliers, nous aurons besoin de fonctions pour obtenir les longueurs.

est

mysql_num_fields

mysql_fetch_lengths

Il n'y a pas beaucoup d'informations pour une compréhension complète(pour les programmeurs débutants).

 
HIDDEN:

Il n'y a pas beaucoup d'informations pour bien comprendre (programmeurs débutants).


Par exemple, quelle fonction de MySQL est difficile à utiliser dans MQL ?
 
sergeev:

Par exemple, quelle fonction de MySQL pose des problèmes lorsqu'on travaille avec MQL ?

Retour du tableau de données, je pense que c'est le seul problème qui n'a pas été entièrement résolu.

P.S. Postez le code complet de la fonction permettant de retourner le tableau de données de la base de données en MQL4. Je comprends que c'était possible de le faire.

 
HIDDEN:

Retour du tableau de données, je pense que c'est le seul problème qui n'a pas été entièrement résolu.

P.S. Postez le code complet de la fonction permettant de retourner le tableau de données de la base de données en MQL4. Je comprends que c'était possible de le faire.


voilà, pour ne pas trop s'enfoncer dans la nature, je vais montrer par l'exemple mysql_get_client_info

il renvoie un pointeur vers une chaîne de caractères (char*) terminée par NULL.

que nous faisons :

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

Et c'est tout. De manière ANALOGIQUE, tout est tiré d'autres fonctions qui renvoient des pointeurs.

PS
Désolé, ce n'est pas MQL4.

 
sergeev:

C'est tout.

Donc tout ceci est pour mql5, et l'implémentation est impossible pour 4 ?
 
HIDDEN:
Donc, tout ceci est pour mql5, et l'implémentation est impossible pour 4 ?

Je pense que ce sera similaire. seulement il est nécessaire de manipuler avec le type dans memcpy (au lieu de uchar donner int[] ou string& ).
essayer, si vous obtenez des résultats (ou pas), faites le moi savoir.
 
sergeev:

Je pense que ce sera la même chose. Seulement vous devez manipuler avec le type dans memcpy (au lieu de uchar donner int[] ou string& ).
Essayez-le, et si vous obtenez des résultats (ou pas), faites-le moi savoir.
J'ai tourné et retourné dans tous les sens, rien n'a marché pour moi sur la 4. Parfois, même le terminal se bloque complètement.
 
sergeev:

Voici un exemple de mysql_get_client_info

il renvoie un pointeur vers une chaîne de caractères (char*) terminée par NULL.

que nous faisons :

Et c'est tout. De manière ANALOGIQUE, tout est tiré d'autres fonctions qui renvoient des pointeurs.

PS
Désolé, ce n'est pas MQL4.


Avez-vous pu obtenir des résultats normaux avec mysql_fetch_row ? J'ai soudainement eu besoin d'un muscle et, par chance, après une mise à jour du terminal, ma méthode a échoué.
 
Graff:

Avez-vous réussi à obtenir des résultats normaux avec mysql_fetch_row ? J'ai soudainement eu besoin d'un muscle et le plus mal possible après les mises à jour du terminal, ma méthode a été bousillée.

Oui, tout fonctionne parfaitement, mais pour l'instant je ne l'ai fait que pour MQL5

Un exemple de fonctionnement tiré de mon post ci-dessus

Raison: