Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 1416

 
ANDREY:

Obrigado pelo esclarecimento.

A propósito, eu removi as vantagens amarelas e o compilador deu um erro. Portanto, eles desempenham algum papel em toda esta construção. Mas o que.... eu ainda não entendo. O que para eles é necessário quando a adição de cordas é feita somente através do uso de pluses azuis. A julgar por suas explicações, não há mais nada nesta construção ..... se não estou enganado.

E sobre cordel(i)... Sobre a conversão do tipo .... é mais ou menos claro para mim. O que não está claro é que..... string é o nome de um tipo de variável. i é uma contra-variável que denota o índice de um elemento de array. E por queeu estou entre parênteses () ? Tenho pensado até agora que os parênteses são uma característica da função. Por exemplo, Print( ). E dados diferentes são colocados dentro de parênteses em algumas funções. Mas o que significam parênteses ou que função os parênteses desempenham em relação a i e toda esta construção - string(i)? À primeira vista, parece que antes a variável i tinha um tipo int (inteiro), e depois você mudou o tipo da variável i de int para string (string) . Mas os parênteses redondos que contêm o meu nome não me deixam pensar assim.

Obrigado pela explicação.

Isto não é uma conversão de tipo, mas uma conversão de um valor na variável i

Você pode ver as coisas desta maneira

eStr+=(string)i+": "+DoubleToString(eArray[i],4)+", ";
 
Alekseu Fedotov:

Esta não é uma conversão de tipo, mas uma transformação do valor encontrado na variável i

pode ser visto mais freqüentemente como


Obrigado pela dica. Conversão do valor da variável i. O que você quer dizer no meu código?
1. O valor
de i era 0, depois de(string)i+ tornou-se 1, depois 2 e assim por diante, até 30. Por que eu preciso (fio) ao invés de apenasi++?
2. O tipo da variável i era int, e após (string)i+ ela se tornou string? Bem, isto não é conversão de valores, mas conversão do tipo de variável.


E também .... Talvez você possa me explicar o que significam as vantagens amarelas. Ou para que servem?

 eStr+=string(i)+": "+DoubleToString(eArray[i],4)+", ";

Obrigado pela explicação.

 
ANDREY:

Obrigado pela dica. Converter o valor da variável i. O que significa no meu código?
1. O valor
de i era 0, depois de(string)i+ tornou-se 1, depois 2 e assim por diante, até 30. Por que eu preciso (fio) ao invés de apenasi++?
2. O tipo da variável i era int, e após (string)i+ ela se tornou string? Bem, isto não é conversão de valores, mas conversão do tipo de variável.


E também .... Talvez você possa me explicar o que significam as vantagens amarelas. Ou para que servem?

Obrigado pela explicação.

A conversão do tipo ou a conversão do tipo explícito são iguais. A documentação utiliza as duas expressões. Você notou corretamente a advertência de Alexey, é a conversão do tipo que...

Além disso: Temos várias cordas

  1. i do tipo int que foi explicitamente convertido em string de tipo (que seja 0)
  2. ": "
  3. eArray[i] fundido ao tipo string através da função DoubleToString (que seja 1.6251)
  4. ", "

O valor de i é incrementado no laço a cada iteração e entra nesta seqüência a partir daí...

Note que as vantagens são colocadas entre estas cordas. Estas vantagens somam estas linhas em uma única linha. O resultado é a string "0: 1,6251", e então esta string é anexada à string na variável eStr pelo operador +=


 
ANDREY:

Obrigado pela dica. Converter o valor da variável i. O que significa no meu código?
1. O valor
de i era 0, depois de(string)i+ tornou-se 1, depois 2 e assim por diante, até 30. Por que eu preciso (fio) ao invés de apenasi++?
2. O tipo da variável i era int, e após (string)i+ ela se tornou string? Bem, isto não é conversão de valores, mas conversão do tipo de variável.


E também .... Talvez você possa me explicar o que significam as vantagens amarelas. Ou para que servem?

Obrigado pela explicação.

Com valias amarelas você forma uma cadeia (texto) que você emite comPrint();

Você pode fazer o mesmo com StringConcatenate()

eStr+=StringConcatenate((string)i,": ",DoubleToString(eArray[i],4),", ");
 
Alekseu Fedotov:

Você usa o sinal amarelo mais para formar uma string (texto), que você emite comPrint();

Você pode fazer o mesmo com StringConcatenate()

Não aconselho o uso desta função, pois ela funciona de forma bem diferente na MQL5 do que na MQL4. Conseqüentemente, pode ser difícil entendê-lo quando você muda para a MQL5.


Mas talvez eu esteja errado...

mql4

string  StringConcatenate( 
   void argument1,         // первый параметр любого простого типа  
   void argument2,         // второй параметр любого простого типа 
   ...                     // следующий параметр любого простого типа 
   );

mql5

int  StringConcatenate( 
   string&  string_var,   // строка для формирования 
   void argument1         // первый параметр любого простого типа  
   void argument2         // второй параметр любого простого типа 
   ...                    // следующий параметр любого простого типа 
   );

Como você pode ver, em mql5, é muito semelhante à simples adição de cordas.

 eStr+=string(i)+": "+DoubleToString(eArray[i],4)+", ";
 StringConcatenate(eStr, i, ": ", eArray[i], ", ");
E a conversão do tipo ocorre nesta função sem qualquer preocupação adicional.
 
Alexey Viktorov:

Não recomendo o uso desta função porque ela funciona de forma diferente na MQL5 do que na MQL4. Consequentemente, pode ser difícil de entender quando você muda para a MQL5

Obrigado pelas valiosas informações

 
Alekseu Fedotov:

Você usa o sinal amarelo mais para formar uma string (texto), que você emite comPrint();

Você pode fazer o mesmo com StringConcatenate()

Obrigado pelas novas informações para mim.

 
ANDREY:

Obrigado pelas valiosas informações

Acrescentei à minha mensagem escrita apressadamente.

Já está claro para todos o quanto você é grato a todos que lhe explicam algo. Não estique o tópico com mensagens separadas...

 
Alexey Viktorov:

A seguir: Temos várias cordas

  1. i do tipo int que é explicitamente do tipo string (que seja 0)
  2. ": "
  3. eArray[i] convertido em tipo stringviaDoubleToString (que seja 1.6251)
  4. ", "




Por que 1,6251 não pode ser fundido ao tipo de corda explicitamente como i? É mais curto e economiza recursos computacionais..... me parece.

Obrigado pela explicação

 
Alexey Viktorov:

Eu escrevi apressadamente no meu posto.

E já está claro para todos o quanto você é grato a todos que lhe explicam algo. Não estique o tópico com mensagens separadas...

Certo. Então um agradecimento por cada uma de suas respostas será implícito por padrão( será armazenado em uma variável :):):):) ).... se você não se importar.