Erros, bugs, perguntas - página 2462

 
astronom55:
Olá. A versão móvel MT5 não está ligada ao meu corretor Alpari. Qual é o problema? Será isto corrigido em algum momento?

Aqui.

 
Sergey Dzyublik:

O mesmo está escrito emStringToShortArray:

No entanto, isto não impede que manuseie adequadamente caracteres NULL em cadeia.

ShortArrayToString( array, start, count ) funcionaincorrectamente: o terminal 0 não é nenhum 0, apenas o que se encontra no final. Neste caso, o fim ou não fim pode ser determinado com base no ArraySize( matriz ). Pelo menos se a contagem for definida explicitamente, a cadeia resultante não deve ser inferior a min( contagem, ArraySize( matriz ))

E StringToShortArray( texto, matriz, início, contagem ) funciona correctamente: o terminal 0 é o que se encontra no fim. E o fim é determinado com base em StringLen( texto )

 
Artyom Trishkin:

Aqui.

  • Não forneceu qualquer materialespecífico para que o seu problema possa ser resolvido. -Todos os utilizadores de Android têm este problema
  • A sua pergunta é tão ampla que não pode ser respondida de forma inequívoca sem esclarecimento - Pergunte o que não entende.
  • É apenas uma pessoa preguiçosa que não lêa documentação. A maioria dos vossos problemas provém simplesmente do desconhecimento dos conceitos básicos da linguagem MQL - penso que isto não está na documentação.
  • Está banido do google ou simplesmente não sabe como utilizara pesquisa- a pesquisa foi inconclusiva.

1


Este é apenas um dos comentários sobre a versão móvel do MT5.

2

Este é o fórum Alpari

Não sabe nada sobre o assunto?

Справочник MQL4
Справочник MQL4
  • docs.mql4.com
MetaQuotes Language 4 (MQL4) - встроенный язык программирования торговых стратегий, разработанный компанией MetaQuotes Software Corp. на основе своего многолетнего опыта в создании торгово-информационных платформ. Этот язык позволяет писать собственные программы-эксперты (Expert Advisors), автоматизирующие управление торговыми процессами и...
 

ao executar o guião


#include <Files\FileTxt.mqh>
void OnStart(){

  CFileTxt file;
  int handle = file.Open( "test.bat", FILE_WRITE | FILE_ANSI | FILE_REWRITE ); //
  if( handle == INVALID_HANDLE ){
    int error = GetLastError();
    Print("Ошибка создания файла, код ошибки ",  error );
    return;
  }
}


erro





Qual é a razão?


Se mudar o nome do ficheiro


int handle = file.Open( "test", FILE_WRITE | FILE_ANSI | FILE_REWRITE ); //

sem erros

 
Aleksey Sergan:

ao executar o guião

erro

Qual é a razão?

Se mudar o nome do ficheiro

sem erros

O nome do ficheiro é o problema.
Operação proibida de ficheiros "executáveis" (exe, msi, bat, ...).

 
Sergey Dzyublik:

O nome do ficheiro é o problema.
A criação de ficheiros "executáveis" (exe, msi, bat, ...) é proibida.

Sim, de facto é. Não consegui encontrar nada na ajuda sobre isso.

 

Pode ser irrelevante, mas estritamente falando na mensagem de erro na compilação

void A::operator=(const A&) aqui (onde está a seta) é desnecessário (mais ainda porque é gerado da mesma forma por defeito)

 
Esta é a 4ª vez num dia que me deparo com um problema com 100% de CPU desligada de ME (build 2037).

Inicialmente aparece 100% de carga central, mas o ME funciona bem - pode mesmo executar a depuração de código em MT.
Contudo, se tentar mudar para outro separador com código fonte - ME fica completamente pendurado (necessidade de matar processo), e uma nova janela de separador ainda não se abre (fica pendurado em estado semi-aberto).
Se eu não mudar para um novo separador, basta fechar o ME, o processo não será fechado, mas tornar-se-á um processo infantil de MT e continuará a carregar 100% do miolo.

O problema surge num local simples, apenas durante o desenvolvimento do código (pequeno projecto, 8 ficheiros <3K linhas no total), o código ME intellisense crashes, presumivelmente.
 
Hurra, conseguimos apanhar o código que "bate" com o analisador ME.
O ME cai ao arrancar. É impossível executar o ME sem primeiro editar o código num outro editor.

Se necessário, o código fonte será fornecido aos programadores dentro de 5-7 dias.
O problema surgiu com o cordel:
if(
Algo deve estar errado com a contagem de parênteses não fechados.
 
Mais uma vez uma hora de procura de erros no código do projecto levou às "especificidades" do MT5 (build 2049).

No terminal, alguma parte dos registos do Expert Advisor pode simplesmente não ser exibida, sem notificar o utilizador sobre a mesma.
Os registos estão no ficheiro de registo - tudo está bem aí.

#define  PRINT(x) Print(#x, ":", string(x))

void OnStart(){  
   string test_name;
   string test_result;  
   
   test_name = "394_TEST_____";
   for(int i = 0; i < 394; i++){
      PRINT(test_name + string(i+1));
   } 
   test_result = "RESULT_SUCCESS";
   PRINT(test_result);
   Sleep(5000);
   
   
   test_name = "395_TEST_____";
   for(int i = 0; i < 395; i++){
      PRINT(test_name + string(i+1));
   } 
   test_result = "RESULT_SUCCESS";
   PRINT(test_result);
   Sleep(5000);

   
   test_name = "396_TEST_____";
   for(int i = 0; i < 396; i++){
      PRINT(test_name + string(i+1));
   } 
   test_result = "RESULT_SUCCESS";
   PRINT(test_result);
   Sleep(5000);
}

De alguma forma, a fila de registo exibe de alguma forma o registo com o número 395, todos os registos antes e depois deste número são exibidos em МТ log.
Assim, o teste #395 falha sempre.