Discussão do artigo "Como acessar o banco de dados MySQL a partir do MQL5 (MQL4)" - página 14
Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
começaram a aparecer o tempo todo, o que isso significa?
ao executar meu código nesta linha.
if(DB==-1){DB=MySqlConnect(Host, User, Password, Database, Port, Socket, ClientFlag);}
res = MySqlCursorOpen(DB, "SELECT id, account, symbol FROM `current` WHERE account="+account);
No MQL, todas as cadeias de caracteres são Unicode e você as passa em vez de ANSI.
É por isso que a dllka trava.
No MQL, todas as cadeias de caracteres são Unicode e você as passa em vez de ANSI.
É por isso que a dll trava.
Se eu remover a condição, tudo funcionará, em geral, você pode refazê-la de forma diferente, mas não entendo por que ela trava.
//if(DB==-1){
DB=MySqlConnect(Host, User, Password, Database, Port, Socket, ClientFlag);
//}
res = MySqlCursorOpen(DB, "SELECT id, account, symbol FROM `current` WHERE account="+account);
No MQL, todas as cadeias de caracteres são Unicode e você as passa em vez de ANSI.
É por isso que a dll trava.
Se eu remover a condição, tudo funcionará, em geral, você pode refazê-la de forma diferente, mas não entendo por que ela trava
//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 é a lógica? Você tem uma conexão antes desse código? Qual é o valor de DB antes da condição? Se a variável DB não estiver inicializada, provavelmente é por causa disso.
E, no último exemplo, você abre uma conexão com o banco de dados normalmente e é por isso que o cursor também funciona
Os scripts fornecidos com a DLL funcionam?Saudações, Eugene!
Obrigado pelo script. Decidi implementá-lo em meu projeto. Mas, na etapa de teste dos scripts que você anexou ao projeto, tenho um erro que não está claro. O ReadIni não funciona. Talvez eu tenha feito algo errado, mas ele sempre retorna valores vazios do ini. Qual poderia ser o motivo? Suspeito que ele não encontre o arquivo no caminho especificado, mas verifiquei em diferentes diretórios que tudo está correto e no lugar.
Se eu prescrever os dados para a conexão diretamente no código, tudo funcionará bem.
Estou usando o mt4.Saudações, Eugene!
Obrigado pelo script. Decidi implementá-lo em meu projeto. Mas, na etapa de teste dos scripts que você anexou ao projeto, tenho um erro que não está claro. O ReadIni não funciona. Talvez eu tenha feito algo errado, mas ele sempre retorna valores vazios do ini. Qual poderia ser o motivo? Suspeito que ele não encontre o arquivo no caminho especificado, mas verifiquei em diferentes diretórios que tudo está correto e no lugar.
Se eu prescrever os dados para a conexão diretamente no código, tudo funcionará bem.
Estou usando o mt4.Você deve verificar os caminhos... O UAC provavelmente afeta. Que caminho você define para o INI? Para o diretório do terminal ou para os dados?
E aqui está outro problema: o texto em russo é inserido em karakaziaby. É claro que eu entendo que a dll está recodificando, mas meu banco de dados é UTF-8. O que devo fazer para inserir um texto em russo legível? isso facilitaria muito minha vida...?
Sim, a conversão para ASCII está em andamento, e há também um comentário sobre isso de colegas chineses. Assim que tiver tempo, tentarei corrigi-lo.
Você precisa verificar os caminhos... O UAC provavelmente afeta isso. Que caminho você define para o INI? Para o diretório do terminal ou para os dados?
Há exemplos em seu arquivo... neles, deixei tudo como está. Apenas alterei o ini.
O problema foi resolvido. Eu mesmo fui estúpido. Anteriormente, a pasta com o MT4 e a pasta com os dados estavam unidas. Agora a pasta de dados está armazenada em uma seção especial do Windows. Agora, o caminho está correto para usar TerminalInfoString(TERMINAL_DATA_PATH) em vez de TerminalPath().
Há exemplos em seu arquivo... neles, deixei tudo como estava. Apenas alterei o ini.
O problema foi resolvido. Eu mesmo fui estúpido. Anteriormente, a pasta com o MT4 e a pasta com os dados estavam unidas. Agora a pasta de dados está armazenada em uma seção especial do Windows. Agora, o caminho está correto para usar TerminalInfoString(TERMINAL_DATA_PATH) em vez de TerminalPath().
Hmm... isso está em algum lugar na biblioteca antiga, nas versões mais recentes (postadas na discussão) eu corrigi isso, se não me falha a memória :)
Ok, então o problema do UTF permanece. Tentarei resolvê-lo esta semana até o fim de semana, se não estiver sobrecarregado.