Discussão do artigo "Aprendendo PrintFormat() e obtendo exemplos prontos para uso" - página 2

 

Artem, por favor, explique isso também:

//--- Escreva o valor com dígitos iguais a 2 и указываем, что свойство отображается в процентах
   PrintFormat("%*s%-*s%-.2 f %%",indent,"",w,header,AccountInfoDouble(ACCOUNT_MARGIN_LEVEL));

A largura da margem e o texto "Margin level:" e o que isso significa?

Fiz experimentos, mas não consigo formular uma explicação.

 
Alexey Viktorov #:

Artem, explique isso mais uma vez, por favor:

A largura da margem e o texto "Margin level:" (Nível da margem:), e o que isso significa?

Fiz experimentos, mas não consigo formular uma explicação.

Margem da linha a partir da borda esquerda
 
Artyom Trishkin #:
Recuo de linha a partir da borda esquerda

Mas por que há uma linha vazia ""? Porque uma linha vazia tem um comprimento de 0. Então, não importa quanta linha vazia você coloque, ela ainda estará vazia. Mas se você colocar algum texto ali, esse texto será exibido em vez do recuo e não haverá recuo....

Essa é a primeira vez que vejo informações insuficientes na documentação. Isso confirma mais uma vez a utilidade de seus artigos. Muito obrigado.

 
Alexey Viktorov #:

Mas por que existe uma string vazia ""? Porque a string vazia tem comprimento 0. Então, não importa quanto espaço vazio você coloque nela, ela ainda estará vazia. Mas se você colocar algum texto ali, esse texto será exibido em vez do recuo e não haverá recuo....

Essa é a primeira vez que vejo informações insuficientes em uma documentação. Isso confirma mais uma vez a utilidade de seus artigos. Obrigado.

O espaço está na string de formatação. Leia esta série de artigos desde o início - eu descrevi esse design lá
 
Artyom Trishkin #:
O espaço está na string de formato. Leia esta série de artigos desde o início - eu descrevi essa construção lá

Sim, peço desculpas. Eu só li até

Saída formatada das propriedades de contagem

e depois pulei um pouco mais....

Isso mais uma vez confirma a utilidade de seus artigos. Muito obrigado.

 
Artyom Trishkin #:
Recuo de linha a partir da borda esquerda

Meus experimentos mostraram que é possível recuar antes de qualquer campo

 PrintFormat("%*sText_1%12sText_2", 5,"","");

/*
 Text_1 Text_2
*/
 
Alexey Viktorov #:

Meus experimentos mostraram que é possível recuar na frente de qualquer campo

Naturalmente. O artigo mostra isso apenas como um acréscimo aos materiais de referência usando um exemplo simples. Alguém apenas lê/não lê, e alguém, depois de vê-lo, faz experimentos e tira conclusões úteis para si mesmo ;)

Olá. Agora você sabe como fazer qualquer recuo/tamanho de espaço especificado por uma variável em qualquer lugar de uma cadeia de texto

 

É assim que você pode especificar o número de espaços:

   PrintFormat("%*sText_1%*sText_2", 5,"",12,"");

/*
 Text_1 Text_2
*/

Em geral, onde os números são usados em uma cadeia de formato para especificar a capacidade de dígitos de algo, você pode substituir um asterisco e, em seguida, especificar o valor necessário nos parâmetros. Se você usá-lo em sua função, então, nos parâmetros formais, passe o valor necessário para formar uma cadeia com a capacidade/precisão/número de caracteres do dígito necessário

 
Artyom Trishkin parâmetros formais, passe o valor necessário para formar uma cadeia com o dígito/precisão/número de caracteres necessário

Fiz isso de forma diferente de propósito, com um asterisco * e diretamente na string de formato.

Também experimentei salvar a string de formato em uma variável do tipo string e inseri-la - funciona. Ou seja, se você precisar produzir o mesmo tipo de cadeia de caracteres várias vezes, poderá usar uma variável que contenha a cadeia de caracteres de formato, para não precisar digitá-la várias vezes e escrever uma função separada.

 
Alexey Viktorov #:

Fiz isso de forma diferente, com um asterisco * e diretamente na string de formato.

Também experimentei salvar a string de formato em uma variável do tipo string e colá-la - funciona. Ou seja, se você precisar produzir o mesmo tipo de cadeia de caracteres várias vezes, poderá usar uma variável que contenha a cadeia de caracteres de formato, para não precisar digitá-la várias vezes e escrever uma função separada.

Gostaria de anexar um exemplo...)