Características da linguagem mql5, subtilezas e técnicas - página 161
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
2020.01.27 01:15:57.859 tst (EURUSD,H1) (null) , 0.000000 , 0
se eu remover a conversão do tipo, a expressão 'NULL' - do tipo 'void' é ilegal
interessante, acontece que o nput string pode ser inicializado vazio
NULL é a inicialização. O exemplo mostra propositadamente uma cadeia sem entrada.
NULL / NIL (em outros termos) não pode ser uma inicialização de uma entidade de corda constante.
Pelo menos porque a corda mql não é um "ponteiro" como em C. Não tem estado especial "nada de especial".
PS (oh, eu não esperava isso de mim mesmo)
Ela não tem nenhum estado especial de "nada".
Fórum sobre comércio, sistemas automatizados de comércio e teste de estratégias comerciais
Peculiaridades de mql5, dicas e truques
fxsaber, 2020.01.26 15:54
Utilizo esta condição todos os dias.
pelo menos porque uma corda mql não é um "ponteiro" como em C. Não tem estado especial "nada de especial".
PS (oh, eu não esperava isso de mim mesmo).
Infelizmente não, uma cadeia em MQL é uma entidade com memória atribuída.@Ilyas explicou porque é que StringBufferLen() pode não mostrar o comprimento da cadeia, mas mostra a memória utilizada para armazenar a cadeia.
Utilizo esta condição todos os dias.
Não é nenhum indicador, em MQL4 eu desajustei apontadores para qualquer objecto usando StringConcatenate(), ou seja, o trabalho das funções incorporadas não é implementado pelas regras MQL ))))
Em MQL4 I unset pointers to any object using StringConcatenate(), ou seja, as funções incorporadas não são implementadas pelas regras MQL )))
Não faz qualquer diferença o que está dentro.
Fórum sobre comércio, sistemas de comércio automatizados e testes estratégicos
Peculiaridades de mql5, dicas e truques
Igor Makanu, 2020.01.26 22:27
Não faz diferença como está dentro.
complementou o meu posto com o vosso exemplo
Também fiz mais algumas experiências com cordel de entrada s = NULL;
tanto quanto entendi, enquanto não estamos a tentar usar o valor da variável de entrada - será NULL, mas no momento em que tentarmos atribuir valor a outra variável ou simplesmente desajustá-la, NULL desaparecerá, ou seja, a memória será atribuída a esta variável de entrada
tanto quanto sei, enquanto não estamos a tentar usar o valor de uma variável de input - este valor é NULL, mas nesse momento, se tentarmos atribuir o valor desta variável de input a outra variável ou simplesmente desajustar esta variável de input, então esta NULL desaparecerá, ou seja, a memória será atribuída a esta variável de input
O mecanismo da operação da variável de entrada foi descrito em pormenor acima.
Não faz qualquer diferença o que está dentro.
há (ainda) especificidade de desreferenciação de entidades (não há indicações em mql, não é C, que haja entidades)
a entrada é uma constante declarada no arranque. não se pode dar-lhe fisicamente o valor "NULL".
const string nothing=NULL; /// <--- ЭТО ЧТО ?
Sim, este comportamento é provavelmente apenas "infalível".
Aparentemente, porque a variável de entrada deve ser inicializada, a= NULL é artificialmente igualada a ="", quando a variável já ocupa pelo menos um byte na memória.
Na MQL5 as entradas:
São absolutamente idênticos. Não é atribuída nenhuma memória para a variável. De qualquer modo, não encontrei quaisquer diferenças.
Em java, por exemplo, tais registos são ligeiramente diferentes, apesar do facto de não ser atribuída memória para a variável em ambos os casos, também. A primeira variante (String string = null;) será considerada inicializada, embora não seja atribuída memória para a variável e a variável possa ser impressa como vazia. No segundo caso (String string;) quando se tenta imprimir a variável, será gerado um erro de variável não-inicializada.
Isto é, a MQL5 é mais tolerante a este respeito.
O que é melhor, eu nem sequer sei.
Como é que a memória não é atribuída a uma variável?
A memória é atribuída e a variável contém lixo arbitrário.
E o facto de a corda não produzir quaisquer valores, é lógico que o tampão esteja vazio.
Como é que a memória não é atribuída a uma variável?
A memória é atribuída, mas a variável não contém lixo arbitrário.
E o facto de a corda não produzir quaisquer valores, é lógico que a memória intermédia esteja vazia.