Erros, bugs, perguntas - página 1327

 

Em ## não se pode usar o 1º dígito

#define  MACRO( x, y )   x##y
void OnStart()
{
        int i = MACRO( 1, 5 );
        Print( i );
}
 

Não se pode omitir o parâmetro macro numa determinada combinação

#define  MACRO1( x )             void x() { Print( __FUNCTION__ ); }
#define  MACRO2( prefix, function )      MACRO1( prefix##function )
#define  MACRO3(         function )      MACRO2(         h2, function )
#define  MACRO4(         function )      MACRO2( /*опущен*/, function )
//---
   void f1() { Print( __FUNCTION__ ); }
MACRO3( f2 )          //нормально
 MACRO4( f2 )          //Ошибка: argument expected for the function-like macro
//---
void OnStart()
{
        MACRO( /*опущен*/, f1 ); //нормально
        h2f2();
        f2();                   
}
 
Karputov Vladimir:
Não. O ficheiro não foi modificado a partir da entrega padrão e a MQL5 Storage não foi utilizada. O utilizador provavelmente entrou numa "Pasta de Dados" diferente - pelo menos essa é a versão mais viável até agora.
Pesquisado em torno do computador. Afinal o ficheiro está morto (( O sistema operativo utilizado é o Windows Server 2012. O ficheiro foi corrigido na pasta "C:\Users\Administrator\AppData\Roaming\MetaQuotes\Terminal\9A8888D580475F4165FB840CCD79A65C\MQL5\Scripts" (última data - Março de 2015). Não sei como aconteceu que tenha sido substituído por um ficheiro com o mesmo nome, mas da pasta "C:\Program Files\MetaTrader 5\MQL5\Scripts" (data da última modificação - Agosto de 2014). O ficheiro fonte com extensão mq5 foi reescrito, enquanto que o ficheiro compilado permaneceu na última versão. Não utilizei oMQL5 Storage, agora vou utilizá-lo.
 
kogriv:
Procurei o computador. Afinal o ficheiro está morto (( O sistema operativo utilizado é o Windows Server 2012. O ficheiro estava na pasta "C:\Users\Administrator\AppData\Roaming\MetaQuotes\Terminal\9A8888D580475F4165FB840CCD79A65C\MQL5\Scripts" (última data - Março de 2015). Não sei como aconteceu que tenha sido substituído por um ficheiro com o mesmo nome, mas da pasta "C:\Program Files\MetaTrader 5\MQL5\Scripts" (data da última modificação - Agosto de 2014). O ficheiro fonte com extensão mq5 foi reescrito, o ficheiro compilado permaneceu na versão mais recente. Não utilizei oMQL5 Storage, agora vou utilizá-lo.
Não deve haver os seus ficheiros (de utilizador) na pasta C:\Program Files\MetaTrader 5\MQL5\Scripts! Se um ficheiro apareceu lá, é apenas devido à intervenção manual no trabalho do MetaEditor. Todo o trabalho com edição e criação de ficheiros deve ter lugar na pasta de dados C:\Users\Administrator\AppData\Roaming\MetaQuotes\Terminal\9A8888D580475F4165FB840CCD79A65C\MQL5\....
 
Karputov Vladimir:
Na pasta C:\Program Files\MetaTrader 5\MQL5\Scripts os seus ficheiros (de utilizador) não devem existir! Se um ficheiro aparece lá, é apenas devido à intervenção manual no trabalho do MetaEditor. Todo o trabalho com edição e criação de ficheiros deve ser colocado na pasta de dados C:\Users\Administrator\AppData\Roaming\MetaQuotes\Terminal\9A8888D580475F4165FB840CCD79A65C\MQL5\....
Copiei-o em primeiro lugar (C:\Program Files\MetaTrader 5\MQL5\Scripts), porque não conhecia as características especiais de localização de ficheiros no servidor, e depois copiei-o para a pasta correcta. Não acho que seja "interferência no trabalho...".
 
kogriv:
Porque não? copiei-o lá no início (C:\Program Files\MetaTrader 5\MQL5\Scripts), porque não conhecia as peculiaridades da localização do ficheiro no servidor, depois descobri-o e copiei-o para a pasta certa. Não creio que seja "adulteração...".
Exactamente - intervenção manual. Tem de mover todos os seus ficheiros de C:\Program Files\MetaTrader 5\MQL5\... (cortar e colar) para o seu devido lugar: C:\Users\Administrator\AppData\Roaming\MetaQuotes\Terminal\9A8888D580475F4165FB840CCD79A65C\MQL5\....
 
Karputov Vladimir:
Exactamente - intervenção manual. Todos os seus ficheiros de C:\Program Files\MetaTrader 5\MQL5\... devem ser movidos (cortados e colados) para o seu devido lugar: C:\Users\Administrator\AppData\Roaming\MetaQuotes\Terminal\9A8888D580475F4165FB840CCD79A65C\MQL5\....
E se não o cortou?
 
kogriv:
E se não o cortou? Mas o pôs dentro...
Nesse caso, a sua situação de sobreescrita está prestes a acontecer de novo. O utilizador tem uma pasta de dados - C:\Users\Administrator\AppData\Roaming\MetaQuotes\Terminal\9A8888D580475F4165FB840CCD79A65C\MQL5\.... Se quiser escrever ficheiros em outras pastas, fá-lo por sua conta e risco. Afinal de contas, o dinheiro é vosso.
 
Karputov Vladimir:
Nesse caso, a sua situação de sobreescrita está prestes a acontecer de novo. O utilizador tem uma pasta de dados - C:\Users\Administrator\AppData\Roaming\MetaQuotes\Terminal\9A8888D580475F4165FB840CCD79A65C\MQL5\.... Se quiser escrever ficheiros em outras pastas, fá-lo por sua conta e risco. Afinal de contas, o dinheiro é vosso.

e sobre a chave /portável?

e a propósito, o que são estas pastas "sdfgshndyueenerneb673756nr76,.t89.y80.tr76m5nbwb6qw6b3qvqvb6547nw8nme789m"? Se houver vários terminais instalados, não é uma tarefa fácil determinar que pasta pertence a que terminal. Claro que se pode entrar neles usando ferramentas MT, mas em todos os outros casos é uma chatice, portanto /portável é a nossa escolha.

 
Andrey Dik:

e sobre a chave /portável?

e a propósito, o que são estas pastas "sdfgshndyueenerneb673756nr76,.t89.y80.tr76m5nbwb6qw6b3qvqvb6547nw8nme789m"? Se houver vários terminais instalados, não é uma tarefa fácil determinar que pasta pertence a que terminal. Claro que se pode entrar neles usando ferramentas MT, mas em todos os outros casos é uma chatice, portanto /portável é a nossa escolha.

O utilizador já experimentou uma vez e obteve ficheiros sobre-escritos. Penso que a segunda vez ele não se queimará.
Razão: