Discussione sull’articolo "Come accedere al database MySQL da MQL5 (MQL4)" - pagina 14
Ti stai perdendo delle opportunità di trading:
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Registrazione
Accedi
Accetti la politica del sito e le condizioni d’uso
Se non hai un account, registrati
ha iniziato a spuntare in continuazione, cosa significa?
quando eseguo il mio codice in questa riga.
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 tutte le stringhe sono Unicode e vengono passate al posto di ANSI.
Ecco perché il dllka si blocca.
In MQL tutte le stringhe sono Unicode e vengono passate al posto di ANSI.
Ecco perché la dll si blocca.
Se rimuovo la condizione, tutto funziona, in generale, si può rifare in modo diverso, ma non capisco perché si blocca.
//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 tutte le stringhe sono Unicode e vengono passate al posto di ANSI.
Ecco perché la DLL si blocca.
Se rimuovo la condizione, tutto funziona, in generale, si può rifare in modo diverso, solo non capisco perché si blocca
//if(DB==-1){
DB=MySqlConnect(Host, User, Password, Database, Port, Socket, ClientFlag);
//}
res = MySqlCursorOpen(DB, "SELECT id, account, symbol FROM `current` WHERE account="+account);
Qual è la logica? Avete una connessione prima di questo codice? A cosa è uguale DB prima della condizione? Se la variabile DB non è inizializzata, probabilmente è a causa di questo.
E nell'ultimo esempio si apre normalmente una connessione al database ed è per questo che anche il cursore funziona.
Gli script forniti con la DLL funzionano?Saluti Eugene!
Grazie per lo script. Ho deciso di implementarlo nel mio progetto. Ma nella fase di test degli script che hai allegato al progetto ho 1 bug, non chiaro. ReadIni non funziona. Forse sbaglio qualcosa, ma restituisce sempre valori vuoti dall'ini. Quale potrebbe essere il motivo? Sospetto che non trovi il file nel percorso specificato, ma ho controllato da diverse directory che tutto sia corretto e al suo posto.
Se prescrivo i dati per la connessione direttamente nel codice, tutto funziona bene.
Sto usando mt4.Saluti Eugene!
Grazie per lo script. Ho deciso di implementarlo nel mio progetto. Ma nella fase di test degli script che hai allegato al progetto ho 1 bug, non chiaro. ReadIni non funziona. Forse sbaglio qualcosa, ma restituisce sempre valori vuoti dall'ini. Quale potrebbe essere il motivo? Sospetto che non trovi il file nel percorso specificato, ma ho controllato da diverse directory che tutto sia corretto e al suo posto.
Se prescrivo i dati per la connessione direttamente nel codice, tutto funziona bene.
Sto usando mt4.Dovresti controllare i percorsi... Molto probabilmente UAC influisce. Quale percorso hai impostato su INI? Alla directory del terminale o a Data?
Ed ecco un altro problema: il testo russo viene inserito in karakaziaby. Ovviamente capisco che la dll sta ricodificando, ma il mio database è UTF-8. Cosa devo fare per inserire un testo russo leggibile? Mi renderebbe la vita molto più facile...?
Sì, la conversione in ASCII è in corso, c'è anche un'osservazione in merito da parte dei colleghi cinesi. Appena avrò tempo cercherò di risolvere il problema.
È necessario controllare i percorsi... Probabilmente l'UAC influisce. Quale percorso avete impostato per INI? Alla directory del terminale o a Data?
Ci sono degli esempi nel vostro archivio... in essi ho lasciato tutto com'è. Ho solo cambiato l'ini.
Il problema è risolto. Sono stato stupido io stesso. Prima la cartella con MT4 e quella con i dati erano unite. Ora la cartella dei dati è memorizzata in una sezione speciale di Windows. Ora il percorso è corretto per prendere TerminalInfoString(TERMINAL_DATA_PATH) invece di TerminalPath().
Ci sono esempi nel vostro archivio... in essi ho lasciato tutto com'era. Ho solo cambiato l'ini.
Il problema è risolto. Sono stato stupido io stesso. Prima la cartella con MT4 e quella con i dati erano unite. Ora la cartella dei dati è memorizzata in una sezione speciale di Windows. Ora il percorso è corretto per prendere TerminalInfoString(TERMINAL_DATA_PATH) invece di TerminalPath().
Hmm... è da qualche parte nella vecchia libreria, nelle ultime versioni (postate nella discussione) l'ho corretto se la memoria non mi inganna :)
Ok, allora il problema UTF rimane. Cercherò di risolverlo questa settimana fino al fine settimana, se non sono oberato di lavoro.