Diskussion zum Artikel "Wie man auf die MySQL-Datenbank von MQL5 (MQL4) aus zugreift" - Seite 14
Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
immer wieder auftauchen, was bedeutet das?
wenn ich meinen Code in dieser Zeile ausführe.
if(DB==-1){DB=MySqlConnect(Host, User, Password, Database, Port, Socket, ClientFlag);}
res = MySqlCursorOpen(DB, "SELECT id, account, symbol FROM `current` WHERE account="+account);
In MQL sind alle Zeichenfolgen Unicode und Sie übergeben sie anstelle von ANSI.
Deshalb stürzt die Dllka ab.
In MQL sind alle Strings Unicode und Sie übergeben sie anstelle von ANSI.
Das ist, warum die Dll abstürzt.
Wenn ich die Bedingung zu entfernen, alles funktioniert, im Allgemeinen, können Sie es anders wiederholen, ich verstehe nur nicht, warum es abstürzt.
//if(DB==-1){
DB=MySqlConnect(Host, User, Password, Database, Port, Socket, ClientFlag);
//}
res = MySqlCursorOpen(DB, "SELECT id, account, symbol FROM `current` WHERE account="+account);
In MQL sind alle Strings Unicode und Sie übergeben sie anstelle von ANSI.
Das ist der Grund, warum die DLL abstürzt.
Wenn ich die Bedingung zu entfernen, alles funktioniert, in der Regel, können Sie es anders zu machen, nur nicht verstehen, warum es abstürzt
//if(DB==-1){
DB=MySqlConnect(Host, User, Password, Database, Port, Socket, ClientFlag);
//}
res = MySqlCursorOpen(DB, "SELECT id, account, symbol FROM `current` WHERE account="+account);
Was ist die Logik? Haben Sie eine Verbindung vor diesem Code? Was ist DB gleich vor der Bedingung? Wenn die DB-Variable nicht initialisiert ist, liegt es wahrscheinlich daran.
Und im letzten Beispiel öffnen Sie eine normale Verbindung zur Datenbank, weshalb der Cursor auch funktioniert.
Funktionieren die mit der DLL gelieferten Skripte?Grüße Eugene!
Vielen Dank für das Skript. Ich habe beschlossen, es in meinem Projekt zu implementieren. Aber in der Phase des Testens der Skripte, die Sie dem Projekt beigefügt haben, habe ich 1 Fehler, nicht klar. ReadIni funktioniert nicht. Vielleicht mache ich etwas falsch, aber es gibt immer leere Werte aus der Ini zurück. Was könnte der Grund dafür sein? Ich vermute, dass es die Datei auf dem angegebenen Pfad nicht findet, aber ich habe von verschiedenen Verzeichnissen aus geprüft, dass alles korrekt und an seinem Platz ist.
Wenn ich die Daten für die Verbindung im Code direkt vorschreibe, funktioniert alles einwandfrei.
Ich verwende mt4.Grüße Eugene!
Vielen Dank für das Skript. Ich habe beschlossen, es in meinem Projekt zu implementieren. Aber in der Phase des Testens der Skripte, die Sie dem Projekt beigefügt haben, habe ich 1 Fehler, nicht klar. ReadIni funktioniert nicht. Vielleicht mache ich etwas falsch, aber es gibt immer leere Werte aus der Ini zurück. Was könnte der Grund dafür sein? Ich vermute, dass es die Datei auf dem angegebenen Pfad nicht findet, aber ich habe von verschiedenen Verzeichnissen aus geprüft, dass alles korrekt und an seinem Platz ist.
Wenn ich die Daten für die Verbindung im Code direkt vorschreibe, funktioniert alles einwandfrei.
Ich verwende mt4.Du solltest die Pfade überprüfen... UAC wirkt sich höchstwahrscheinlich aus. Welchen Pfad stellst du auf INI? Auf das Terminalverzeichnis oder Data?
Und hier ist ein weiteres Problem: Russischer Text wird in karakaziaby eingefügt. Natürlich verstehe ich, dass die dll ist Umkodierung, aber meine Datenbank ist UTF-8. Was soll ich tun, um lesbaren russischen Text einzufügen...? das würde mein Leben viel einfacher machen...?
Ja, die Konvertierung in ASCII ist im Gange, es gibt auch eine Bemerkung dazu von chinesischen Kollegen. Sobald ich Zeit habe, werde ich versuchen, dies zu beheben.
Sie müssen die Pfade überprüfen... UAC beeinflusst es wahrscheinlich. Welchen Pfad stellen Sie für INI ein? Auf das Terminalverzeichnis oder Data?
Es gibt Beispiele in deinem Archiv... in denen habe ich alles so gelassen, wie es ist. Ich habe nur die Ini geändert.
Das Problem ist gelöst. Ich war selbst dumm. Früher waren der Ordner mit MT4 und der Ordner mit den Daten zusammengelegt. Jetzt ist der Ordner für Daten in einem speziellen Bereich von Windows gespeichert. Jetzt ist der Pfad richtig, TerminalInfoString(TERMINAL_DATA_PATH) statt TerminalPath() zu nehmen.
Es gibt Beispiele in deinem Archiv ... in denen ich alles so gelassen habe, wie es war. Ich habe nur die ini geändert.
Das Problem ist gelöst. Ich war selbst dumm. Früher waren der Ordner mit MT4 und der Ordner mit den Daten zusammengelegt. Jetzt ist der Ordner für Daten in einem speziellen Bereich von Windows gespeichert. Jetzt ist der Pfad richtig, TerminalInfoString(TERMINAL_DATA_PATH) statt TerminalPath() zu nehmen.
Hmm... es ist irgendwo in der alten Bibliothek, in den neuesten Versionen (in der Diskussion gepostet) habe ich es korrigiert, wenn ich mich richtig erinnere :)
Ok. Dann bleibt noch das UTF-Problem. Ich werde versuchen, es diese Woche bis zum Wochenende zu lösen, wenn ich nicht überarbeitet bin.