![MQL5 - Linguagem para estratégias de negociação inseridas no terminal do cliente MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
Os resultados da execução mostram que o compilador age de forma contrária à lógica:
Para uma corda puramente constante, o tamanho do buffer por StringBufferlen=0, o que significa que a corda é constante:
Reatribuir uma string "supostamente" constante não é trabalhar com uma constante, mas sim criar exatamente uma variável dinâmica com uma pré-alocação de 260 caracteres:
Para uma corda puramente constante, o tamanho do buffer por StringBufferlen=0, o que significa que a corda é constante:
A realocação de uma string "supostamente" constante não está funcionando com uma constante, está criando uma variável dinâmica com uma pré-alocação de 260 caracteres:
é hora de introduzir alocadores ))))
Como um lembrete, há um bug com o buffer de cordas:
A função da DLL pode ser qualquer coisa.Proponho acrescentar uma versão estendida da funçãoStringToTime à MQL na forma:
Porque na versão atual a função sempre retorna o tempo válido, mesmo que a corda contenha lixo, e a data atual é devolvida, o que é particularmente estranho:
StringToTime("aaabbbccc") retorna "2019.09.05 01:00:00" Isto é normal? Nesta implementação, a função é de todo perigosa para a saúde. Portanto, é necessária uma versão com verificações corretas.
Até agora, temos que analisar nossa própria função,mas o problema é que o tempo pode ser especificado em diferentes formatos.E não quero realmente codificar todos esses formatos reinventando a roda quando o tempo já tiver sido implementado na MQL.
Basicamente, isto também se aplica a outras funções de conversão de cordas: StringToInteger, StringToDouble. Não é fornecida nenhuma verificação de validade para eles também.
p.s. Hmm, acontece queGetLastError() gera erros nestes casos. Eu não sabia disso. A documentação para estas funções não diz nada disso. Então o problema é resolvido. Embora fosse mais fácil com um bool.Eu apoio a sugestão de Alexey, o manuseio seguro das cordas é a chave para evitar erros ocultos.
erro "a propriedade já existe com valor diferente e será pulada".
Utilizou-o pela primeira vez. Nenhum outro arquivo o tem. Não depende do valor. Construir 2136.
Por favor, traga de volta o modelador de estilo antigo.
Agora eu não consigo descobrir o que deve funcionar aqui:
Esta peça costumava ser parecida com esta:
erro "a propriedade já existe com valor diferente e será pulada".
Utilizou-o pela primeira vez. Nenhum outro arquivo o tem. Não depende do valor. Construir 2136.
Este erro ocorre durante o trabalho com projetos se o valor do bem especificado no código fonte estiver em conflito com o valor nas configurações do projeto.
Propriedades do projeto
Por favor, traga de volta o modelador de estilo antigo.
Agora eu não consigo descobrir o que deve funcionar aqui:
Esta peça costumava ser parecida com esta:
Múltiplos ifs aninhados não podem ser salvos por qualquer alinhamento. Precisamos mudar o código para torná-lo legível.
Múltiplos ses aninhados não podem ser salvos por qualquer alinhamento. É preciso alterar o código para torná-lo legível.
Não há ninhos múltiplos - o nível superior é se, então, se outro nível.
Estou pedindo o estilo antigo de volta, quando se parecia mais com isto:
- Estava em uma única linha e não houve nenhuma compensação do texto subseqüente à direita.
Aqui está um exemplo da ajuda dadeclaração Condicional if-else (o velho estilista)
e isto é o que o novo modelador faz: