Código fonte alterando ao criar outro idêntico renomeando (Qual a explicação?)

 

Bom dia, srs.


Há uma semana vem me ocorrendo algo que para mim achei estranho e tive que deixar de aplicar: criar um novo arquivo código-fonte, via 'salvar como' e renomear com um nome diferente. Por incrível que parece, o EA deixou de executar determinadas tarefas. Não alterei absolutamente nada, o simples fato de criar um outro arquivo, idêntico, renomeando o anterior, alterou o código de alguma maneira. Não ocorrem erros, sem avisos, nada. Alguém, se possível, poderia me dar alguma explicação, por favor? Se é que existe alguma, pois isso nunca havia me ocorrido antes. Frustrante :(

 
Daniel D.:

Bom dia, srs.


Há uma semana vem me ocorrendo algo que para mim achei estranho e tive que deixar de aplicar: criar um novo arquivo código-fonte, via 'salvar como' e renomear com um nome diferente. Por incrível que parece, o EA deixou de executar determinadas tarefas. Não alterei absolutamente nada, o simples fato de criar um outro arquivo, idêntico, renomeando o anterior, alterou o código de alguma maneira. Não ocorrem erros, sem avisos, nada. Alguém, se possível, poderia me dar alguma explicação, por favor? Se é que existe alguma, pois isso nunca havia me ocorrido antes. Frustrante :(

Bom dia.

Nunca aconteceu aqui e nunca ouvi comentários sobre isso.

Único pensamento que me ocorreu é se você está salvando na mesma pasta.

Uma vez um cliente teve problema pois estava salvando subpasta dentro de subpasta (acho que tinha umas 10) e meu indicador nao funcionava. Foi só colocar dentro da pasta raiz (indicadores) e funcionou na hora.

O formato do arquivo também está correto?
Gera o ex5? Se sim, aparece alguma mensagem na aba expert quando coloca ele no gráfico?

 
Daniel D.:

Bom dia, srs.


Há uma semana vem me ocorrendo algo que para mim achei estranho e tive que deixar de aplicar: criar um novo arquivo código-fonte, via 'salvar como' e renomear com um nome diferente. Por incrível que parece, o EA deixou de executar determinadas tarefas. Não alterei absolutamente nada, o simples fato de criar um outro arquivo, idêntico, renomeando o anterior, alterou o código de alguma maneira. Não ocorrem erros, sem avisos, nada. Alguém, se possível, poderia me dar alguma explicação, por favor? Se é que existe alguma, pois isso nunca havia me ocorrido antes. Frustrante :(

Eu nunca tive isso tambem, a coisa que consigo imaginar seriam duas:

1) Voce fez o salvar como e fez uma serie da alteracoes no arquivo e salvou. Isso quer dizer que as alteracoes foram feitas no arquivo de nome definido no salvar como e nao no arquivo antigo como voce pode estar pensando.

2) Voce no salvar como pode ter sobreescrito um arquivo que tinha coisas que voce utiliza. (mas dai essa aqui nao faria sentido porque esperariamos erro de compilacao e etc)

 
Ricardo Branco #:
Bom dia.

Nunca aconteceu aqui e nunca ouvi comentários sobre isso.

Único pensamento que me ocorreu é se você está salvando na mesma pasta.

Uma vez um cliente teve problema pois estava salvando subpasta dentro de subpasta (acho que tinha umas 10) e meu indicador nao funcionava. Foi só colocar dentro da pasta raiz (indicadores) e funcionou na hora.

O formato do arquivo também está correto?
Gera o ex5? Se sim, aparece alguma mensagem na aba expert quando coloca ele no gráfico?

Ricardo, obrigado por responder.


O formato do arquivo está correto e tanto o executável quanto o fonte ficam juntas na pasta raiz MQL5\Expert.

É uma coisa bizarra, parece que tem algo a ver com alocação de  memória das variáveis, como se estivessem carregadas no arquivo anterior e fossem resetadas no novo arquivo. Isso coicide tb com a troca que fiz de um pc, justamente semana passada. Outra coisa q pensei é rever algumas variáveis declaradas como global e jogá-las em OnTick. Mas tudo isso é especulação e querer contornar um problema, pois nunca tinha me ocorrido algo do tipo antes.

 
Ricardo Rodrigues Lucca #:

Eu nunca tive isso tambem, a coisa que consigo imaginar seriam duas:

1) Voce fez o salvar como e fez uma serie da alteracoes no arquivo e salvou. Isso quer dizer que as alteracoes foram feitas no arquivo de nome definido no salvar como e nao no arquivo antigo como voce pode estar pensando.

2) Voce no salvar como pode ter sobreescrito um arquivo que tinha coisas que voce utiliza. (mas dai essa aqui nao faria sentido porque esperariamos erro de compilacao e etc)

Caro amigo, obrigado pela resposta.


1) também tinha pensado nessa possibilidade, mas aí criei vários arquivos espelhos a partir do original já salvo e todos falharam da mesma forma;

2) sem erros de compilação, avisos, nada, código idêntico.

 
E se vc abrir a pasta de dados, ctrl c e ctrl c criando uma cópia?

Se pegar um programa que compare as linhas do código, tem alguma diferença?

Vc está usando alguma função de salvar arquivo? Variável global ou algo assim, combinado com a função que pega o nome do arquivo?

MQLInfoString(MQL_PROGRAM_NAME)
 
Ricardo Branco #:
E se vc abrir a pasta de dados, ctrl c e ctrl c criando uma cópia?

Se pegar um programa que compare as linhas do código, tem alguma diferença?

Vc está usando alguma função de salvar arquivo? Variável global ou algo assim, combinado com a função que pega o nome do arquivo?

MQLInfoString(MQL_PROGRAM_NAME)

Não, o MQLInfoString não estava sendo usado. Infelizmente eu tive q seguir com o dia e fui obrigado a editar o arquivo .mq5 original, q era justamente p ficar de backup. Antes, comparei e eram cópias fieis. Fiquei o dia inteiro no código e dps de varias alterações as cópias agora estão saindo fieis. Mas fica de alerta aí aos programadores, tem algum erro em algum lugar, mas tá bem imperceptível, aparentemente não de codificação, na própria máquina talvez q troquei semana passada, algo relacionado a memória, sei lá. Hj nao tive tempo de investigar a fundo, descobrindo algo eu retorno no post. Tinham algumas variáveis booleanas globais, passei elas p OnTick, não sei se isso de alguma forma fez diferença, a dúvida vai ficar no ar.

 
Daniel D. #:

Caro amigo, obrigado pela resposta.


1) também tinha pensado nessa possibilidade, mas aí criei vários arquivos espelhos a partir do original já salvo e todos falharam da mesma forma;

2) sem erros de compilação, avisos, nada, código idêntico.

Uma terceira coisa que consigo pensar pode ser que esse teu codigo ta dentro de um outro dando "include". Dai voce renomeou esse que o include se refere e esta compilando e espera que veja a mudanca no que esta com o include, mas pra isso acontecer voce precisaria compilar esse.

Tentando deixar mais claro, seria isso: A inclui B. Se voce renomeou o B e esta compilando, o A nao teve nenhuma mudanca do que esta novo em B. Voce precisa ir no codigo de A e compila-lo tambem.