Errori, bug, domande - pagina 2462

 
astronom55:
Salve. La versione mobile di MT5 non si connette al mio broker Alpari. Qual è il problema? Questo sarà risolto ad un certo punto?

Qui.

 
Sergey Dzyublik:

Lo stesso è scritto inStringToShortArray:

Tuttavia, questo non gli impedisce di gestire adeguatamente i caratteri NULL nella stringa.

ShortArrayToString( array, start, count ) funzionain modo errato: il terminale 0 non è uno 0 qualsiasi, solo quello alla fine. In questo caso la fine o non fine può essere determinata in base a ArraySize( array ). Almeno se il conteggio è impostato esplicitamente, la stringa risultante non deve essere più corta di min( count, ArraySize( array ))

E StringToShortArray( text, array, start, count ) funziona correttamente: il terminale 0 è quello alla fine. E la fine è determinata in base a StringLen ( testo )

 
Artyom Trishkin:

Qui.

  • Non hai fornito alcun materialespecifico per poter affrontare il tuo problema. -Tutti gli utenti Android hanno questo problema
  • La tua domanda è così ampia che non può avere una risposta univoca senza un chiarimento - Chiedi ciò che non capisci.
  • Sei solo una persona pigra che non leggela documentazione. La maggior parte dei vostri problemi deriva semplicemente dall'ignoranza dei concetti di base del linguaggio MQL - credo che questo non sia nella documentazione.
  • Sei bandito da Google o semplicemente non sai come usare laricerca- la ricerca è stata inconcludente.

1


Questi sono solo alcuni dei feedback sulla versione mobile di MT5.

2

Questo è il forum di Alpari

Non ne sai niente?

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

quando si esegue lo script


#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;
  }
}


errore





Qual è la ragione?


Se cambiate il nome del file


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

nessun errore

 
Aleksey Sergan:

quando si esegue lo script

errore

Qual è la ragione?

Se cambiate il nome del file

nessun errore

Il problema è il nome del file.
Proibito il funzionamento dei file "eseguibili" (exe, msi, bat, ...).

 
Sergey Dzyublik:

Il nome del file è il problema.
La creazione di file "eseguibili" (exe, msi, bat, ...) è vietata.

Sì, è proprio così. Non ho trovato nulla nell'aiuto su questo.

 

Può essere irrilevante, ma in senso stretto nel messaggio di errore alla compilazione

void A::operator=(const A&) qui (dove c'è la freccia) non è necessario (tanto più che è generato allo stesso modo per default)

 
Questa è la quarta volta in un giorno che ho riscontrato un problema di blocco della CPU al 100% di ME (build 2037).

Inizialmente appare un carico del nucleo del 100%, ma ME funziona bene - si può anche eseguire il debug del codice in MT.
Tuttavia, se si prova a passare a un'altra scheda con il codice sorgente - ME si blocca completamente (è necessario uccidere il processo), e la nuova finestra della scheda non si apre ancora (si blocca in uno stato semiaperto).
Se non passo a una nuova scheda, ma chiudo solo ME, il processo non si chiude, ma diventa un processo figlio di MT e continua a caricare il 100% del kernel.

Il problema si presenta in pianura, proprio durante lo sviluppo del codice (piccolo progetto, 8 file <3K linee in totale), ME code intellisense si blocca presumibilmente.
 
Urrà, siamo riusciti a catturare il codice che "blocca" l'analizzatore ME.
ME si blocca all'avvio. È impossibile eseguire il ME senza prima modificare il codice in un altro editor.

Se necessario, il codice sorgente sarà fornito agli sviluppatori in 5-7 giorni.
Il problema è sorto con la corda:
if(
Deve esserci qualcosa che non va nel conteggio delle parentesi non chiuse.
 
Di nuovo un'ora di ricerca di errori nel codice del progetto ha portato alle "specifiche" di MT5 (build 2049).

Nel terminale una parte dei registri dell'Expert Advisor può semplicemente non essere visualizzata, senza avvisare l'utente.
I registri sono nel file di log - lì è tutto a posto.

#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);
}

In qualche modo la coda di log visualizza un record con il numero 395, tutti i record prima e dopo questo numero vengono visualizzati nel log МТ.
Così il test #395 fallisce sempre.