Erros, bugs, perguntas - página 1687

 
Pergunta. O tamanho de uma classe vazia em MQL é de 16 bytes (num sistema de 64 bits). Porquê? 8 bytes devem ser ocupados pelo ponteiro para a tabela virtual (de acordo com a documentação, todas as classes o têm em MQL). E os restantes 8 bytes são ocupados por quê?
 
Colegas, será que alguém encontrou este problema? O terminal foi actualizado para o biuld 1430 esta manhã. E como coincidência, ontem reescrevi o meu Conselheiro Especialista por trabalhar com ficheiros através da biblioteca padrão (antes de não ter sido totalmente bem sucedido usando operações de ficheiros padrão), mas não o testei - adiei-o para a manhã. E aqui está o resultado: o Expert Advisor não encontra um ficheiro durante os testes - a função FileIsExist retorna sempre falso. Não sei onde reside a falha - nem nas minhas modificações, nem por causa da actualização. A questão é que a documentação diz que o ficheiro deve ser localizado na pasta MQL5/Tester/Files durante os testes. No entanto, na realidade, o caminho é diferente: ...Enrolar as cotas de meta Testador...algumas tretas hexagonais...Agente-127.0.0.1-3000 MQL5 Ficheiros. Isto é, pelo menos há um erro na documentação. Mas o principal é que quando os testes começam, o ficheiro aí colocado manualmente é apagado da pasta especificada, embora a minha função FileIsExist esteja prescrita no OnInit e seja a primeira a aceder aos ficheiros. Então tenho uma pergunta: onde deve ser localizado um ficheiro durante os testes? E o que acontece de todo?
 
BlackTomcat:
Colegas, será que alguém encontrou este problema? O terminal foi actualizado para o biuld 1430 esta manhã. E como coincidência, ontem reescrevi o meu Conselheiro Especialista por trabalhar com ficheiros através da biblioteca padrão (antes de não ter sido totalmente bem sucedido usando operações de ficheiros padrão), mas não o testei - adiei-o para a manhã. E aqui está o resultado: o Expert Advisor não encontra um ficheiro durante os testes - a função FileIsExist retorna sempre falso. Não sei onde reside a falha - nem nas minhas modificações nem por causa da actualização. A questão é que a documentação diz que o ficheiro deve ser localizado na pasta MQL5/Tester/Files durante os testes. No entanto, na realidade, o caminho é diferente: ...Enrolar as cotas de meta Testador...algumas tretas hexagonais...Agente-127.0.0.1-3000 MQL5 Ficheiros. Isto é, pelo menos há um erro na documentação. Mas o principal é que quando os testes começam, o ficheiro aí colocado manualmente é apagado da pasta especificada, embora a minha função FileIsExist esteja prescrita no OnInit e seja a primeira a aceder aos ficheiros. Então tenho uma pergunta: onde deve ser localizado um ficheiro durante os testes? E o que acontece de todo?
Bem, o problema foi resolvido utilizando a bandeira FILE_COMMON.
O ficheiro será localizado na pasta ...{Roaming\MetaQuotes\Terminal\FilesCommon Durante os testes, não é apagado de lá e pode ser lido normalmente.
 

Pergunta: Como posso encontrar as minhas mensagens no fórum MQL4? Há cerca de dois anos foi criado um tópico com código anexado e este código tornou-se agora interessante, mas a pesquisa no fórum é silenciosa. Se eu entrar nas minhas publicações, este tópico não está lá. (suprimido?)

 

Como sei se uma macro já foi ou não utilizada?

 
fxsaber:

Como sei se uma macro já foi ou não utilizada?

assim:

#ifndef __MY_MACROS__   // если макрос не использован
   #define __MY_MACROS__
//----------------------------------------
// тут ваш код использующий макрос
//----------------------------------------
#endif // __MY_MACROS__
 
coderex:

assim:

Referia-me à outra coisa.
#define  MACROS(A) A

void Func()
{
  MACROS(A) // Если закомментировать, то макрос ни разу не использовался
}

// Вот здесь хотелось бы понять, использовался ли хоть раз макрос или нет.
 
Ajude-me a descobrir como fazer uma verificação na fonte se o OnInit está definido ou não?
 
fxsaber:
Estava a referir-me a outra coisa.
O mais simples é um contador de chamadas macro numa variável global, sobrescrita a partir da própria macro.
 
Sergei Vladimirov:
O mais simples é um contador de chamadas macro numa variável global, reescrita a partir da própria macro.
Existe tal variante, mas não é adequada para todas as macros, infelizmente.