Obrigado. Muito informativo, mas não desde a primeira leitura...))))))
Ler a ajuda ao escrever código é, de certa forma, doloroso e demorado. É por isso que não entendo muito... Espero que este artigo me ajude a entender melhor as sutilezas de PrintFormat() e StringFormat().
Talvez o único ponto não óbvio não abordado na ajuda seja quando a especificação do especificador de tamanho de dados (h | l | ll | I32 | I64) pode ser realmente útil se tudo funcionar sem ele.
Veja este exemplo
//+------------------------------------------------------------------+ //| Função de início do programa de script| //+------------------------------------------------------------------+ void OnStart() { //--- long x = (long)0xFFFFFFFF * 1000; Print("\nDEC: ", typename(x)," x=",x,"\n---------"); Print("%hu: ", StringFormat("%hu",x)); Print("%u: ", StringFormat("%u",x)); Print("%I64u: ",StringFormat("%I64u",x)); Print("%llu: ", StringFormat("%llu",x)); Print("\nHEX: ", typename(x)," x=",StringFormat("%llx",x),"\n---------"); Print("%hx: ", StringFormat("%hx",x)); Print("%x: ", StringFormat("%x",x)); Print("%I64x: ",StringFormat("%I64x",x)); Print("%llx: ", StringFormat("%llx",x)); }
Resultado
2023.07.12 17:48:12.920 PrinFormat (EURUSD,H1) DEC: long x=4294967295000 2023.07.12 17:48:12.920 PrinFormat (EURUSD,H1) --------- 2023.07.12 17:48:12.920 PrinFormat (EURUSD,H1) %hu: 64536 2023.07.12 17:48:12.920 PrinFormat (EURUSD,H1) %u: 4294966296 2023.07.12 17:48:12.920 PrinFormat (EURUSD,H1) %I64u: 4294967295000 2023.07.12 17:48:12.920 PrinFormat (EURUSD,H1) %llu: 4294967295000 2023.07.12 17:48:12.920 PrinFormat (EURUSD,H1) 2023.07.12 17:48:12.920 PrinFormat (EURUSD,H1) HEX: long x=3 e7fffffc18 2023.07.12 17:48:12.920 PrinFormat (EURUSD,H1) --------- 2023.07.12 17:48:12.920 PrinFormat (EURUSD,H1) %hx: fc18 2023.07.12 17:48:12.920 PrinFormat (EURUSD,H1) %x: fffffc18 2023.07.12 17:48:12.920 PrinFormat (EURUSD,H1) %I64x: 3 e7fffffc18 2023.07.12 17:48:12.920 PrinFormat (EURUSD,H1) %llx: 3 e7fffffc18
Talvez o único ponto não óbvio da ajuda não tenha sido abordado - em que casos pode ser realmente útil especificar o especificador de tamanho de dados (h | l | ll | I32 | I64) se tudo funciona sem ele.
É claro que funciona. Mas, há apenas algumas horas, eu estava pensando na mesma questão e tive uma ideia: se passarmos apenas valores duplos para uma função e, em seguida, dentro dela, com base em alguns critérios, entendermos que esses dados duplos devem ser dados longos. É aqui que especificamos seu tamanho. Apenas uma ideia em voz alta. Não verifiquei isso.
Como vivi todos esses anos sem o printformat? Provavelmente continuarei vivendo assim.
Artem, não entendo de onde veio isso
uint w=(header_width==0 ? header.Length()+1 : header_width);
Eu não conectei nenhuma biblioteca. Ou estou completamente cego?
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Você concorda com a política do site e com os termos de uso
Novo artigo Aprendendo PrintFormat() e obtendo exemplos prontos para uso foi publicado:
Este artigo será útil tanto para iniciantes quanto para desenvolvedores experientes. Nele, analisaremos a função PrintFormat(), veremos exemplos de formatação de strings e escreveremos modelos para a exibição de diferentes informações no log do terminal.
A saída de valores para o log ou para a tela do monitor é uma operação simples e conhecida, até que seja necessário gerar algo mais complexo do que "Hello, world". Mas, mais cedo ou mais tarde, surge aquela situação em que você precisa gerar uma saída formatada de um valor ou de uma propriedade que não é necessária com frequência. Certamente, você pode acessar a Documentação MQL5 e se lembrar do que esqueceu ou não sabia.
Mas, às vezes, você quer ter uma coleção de receitas prontas para produzir todos os tipos de informações fornecidas pelo terminal MetaTrader 5. Neste artigo, tentaremos entender as nuances da chamada da função PrintFormat e escrever modelos prontos que podem ser simplesmente inseridos em seu código.
Autor: Artyom Trishkin