Discussion de l'article "Comment accéder à la base de données MySQL à partir de MQL5 (MQL4)" - page 14
Vous manquez des opportunités de trading :
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Inscription
Se connecter
Vous acceptez la politique du site Web et les conditions d'utilisation
Si vous n'avez pas de compte, veuillez vous inscrire
ont commencé à apparaître en permanence, qu'est-ce que cela signifie ?
lors de l'exécution de mon code dans cette ligne.
if(DB==-1){DB=MySqlConnect(Host, User, Password, Database, Port, Socket, ClientFlag);}
res = MySqlCursorOpen(DB, "SELECT id, account, symbol FROM `current` WHERE account="+account);
Dans MQL, toutes les chaînes sont Unicode et vous les passez au lieu d'ANSI.
C'est la raison pour laquelle le dllka se plante.
Dans MQL, toutes les chaînes sont Unicode et vous les passez au lieu d'ANSI.
C'est pourquoi la dll plante.
Si je supprime la condition, tout fonctionne, en général, on peut refaire les choses différemment, mais je ne comprends pas pourquoi ça plante.
//if(DB==-1){
DB=MySqlConnect(Host, User, Password, Database, Port, Socket, ClientFlag);
//}
res = MySqlCursorOpen(DB, "SELECT id, account, symbol FROM `current` WHERE account="+account);
Dans MQL, toutes les chaînes sont Unicode et vous les passez au lieu d'ANSI.
C'est pourquoi la dll se plante.
Si je supprime la condition, tout fonctionne, en général, vous pouvez le refaire différemment, mais je ne comprends pas pourquoi il se bloque.
//if(DB==-1){
DB=MySqlConnect(Host, User, Password, Database, Port, Socket, ClientFlag);
//}
res = MySqlCursorOpen(DB, "SELECT id, account, symbol FROM `current` WHERE account="+account);
Quelle est la logique ? Avez-vous une connexion avant ce code ? Quelle est la valeur de DB avant la condition ? Si la variable DB n'est pas initialisée, c'est probablement à cause de cela.
Et dans le dernier exemple, vous ouvrez une connexion à la base de données normalement et c'est pourquoi le curseur fonctionne aussi.
Les scripts fournis avec la DLL fonctionnent-ils ?Salutations Eugène !
Merci pour ce script. J'ai décidé de le mettre en œuvre dans mon projet. Mais au stade du test des scripts que vous avez joints au projet, j'ai un bogue, qui n'est pas clair. ReadIni ne fonctionne pas. Peut-être que je fais quelque chose de mal, mais il renvoie toujours des valeurs vides de l'ini. Quelle pourrait en être la raison ? Je soupçonne qu'il ne trouve pas le fichier sur le chemin spécifié, mais j'ai vérifié à partir de différents répertoires que tout est correct et en place.
Si je prescris les données pour la connexion dans le code directement, tout fonctionne bien.
J'utilise mt4.Salutations Eugène !
Merci pour ce script. J'ai décidé de le mettre en œuvre dans mon projet. Mais au stade du test des scripts que vous avez joints au projet, j'ai un bogue, qui n'est pas clair. ReadIni ne fonctionne pas. Peut-être que je fais quelque chose de mal, mais il renvoie toujours des valeurs vides de l'ini. Quelle pourrait en être la raison ? Je soupçonne qu'il ne trouve pas le fichier sur le chemin spécifié, mais j'ai vérifié à partir de différents répertoires que tout est correct et en place.
Si je prescris les données pour la connexion dans le code directement, tout fonctionne bien.
J'utilise mt4.Vous devriez vérifier les chemins d'accès... L'UAC est probablement en cause. Quel chemin définissez-vous pour l'INI ? Dans le répertoire du terminal ou dans Data ?
Et voici un autre problème : du texte russe est inséré dans karakaziaby. Bien sûr, je comprends que la dll recode, mais ma base de données est en UTF-8. Que dois-je faire pour insérer du texte russe lisible... ? cela me faciliterait grandement la vie... ?
Oui, la conversion en ASCII est en cours, des collègues chinois ont également fait une remarque à ce sujet. Dès que j'aurai le temps, j'essaierai d'y remédier.
Vous devez vérifier les chemins d'accès... L'UAC l'affecte probablement. Quel chemin d'accès définissez-vous pour l'INI ? Dans le répertoire du terminal ou dans Data ?
Il y a des exemples dans votre archive... dans ces exemples, j'ai tout laissé tel quel. J'ai juste changé l'ini.
Le problème est résolu. J'ai été stupide moi-même. Auparavant, le dossier avec MT4 et le dossier avec les données étaient réunis. Maintenant le dossier des données est stocké dans une section spéciale de Windows. Maintenant le chemin est correct et il faut prendre TerminalInfoString(TERMINAL_DATA_PATH) au lieu de TerminalPath().
Il y a des exemples dans votre archive... dans ces exemples, j'ai tout laissé tel quel. J'ai juste changé l'ini.
Le problème est résolu. J'ai été stupide moi-même. Auparavant, le dossier avec MT4 et le dossier avec les données étaient réunis. Maintenant le dossier des données est stocké dans une section spéciale de Windows. Maintenant le chemin est correct et il faut prendre TerminalInfoString(TERMINAL_DATA_PATH) au lieu de TerminalPath().
Hmm... c'est quelque part dans l'ancienne bibliothèque, dans les dernières versions (postées dans la discussion) je l'ai corrigé si ma mémoire est bonne :)
Je vais essayer de le résoudre cette semaine jusqu'au week-end, si je ne suis pas surchargé de travail.