Обсуждение статьи "Изучаем PrintFormat() и берем готовые к использованию примеры" - страница 2

 

Артём, ещё это объясни пожалуйста:

//--- Значение пишем с digits, равным 2 и указываем, что свойство отображается в процентах
   PrintFormat("%*s%-*s%-.2f %%",indent,"",w,header,AccountInfoDouble(ACCOUNT_MARGIN_LEVEL));

Ширина поля и текст «Margin level:», а что означает это?

Я поэкспериментировал, но объяснения не могу сформулировать.

 
Alexey Viktorov #:

Артём, ещё это объясни пожалуйста:

Ширина поля и текст «Margin level:», а что означает это?

Я поэкспериментировал, но объяснения не могу сформулировать.

Отступ строки от левого края
 
Artyom Trishkin #:
Отступ строки от левого края

Но почему тогда пустая строка ""? Ведь пустая строка имеет длину 0. Тогда хоть сколько пустоты не поставь, всё равно будет пустота. А вот если туда вписать какой-то текст, то вместо отступа будет выведен этот текст и никакого отступа не будет…

Я впервые встречаю в документации недостаточность информации. Это ещё раз подтверждает полезность твоих статей. Спасибо.

 
Alexey Viktorov #:

Но почему тогда пустая строка ""? Ведь пустая строка имеет длину 0. Тогда хоть сколько пустоты не поставь, всё равно будет пустота. А вот если туда вписать какой-то текст, то вместо отступа будет выведен этот текст и никакого отступа не будет…

Я впервые встречаю в документации недостаточность информации. Это ещё раз подтверждает полезность твоих статей. Спасибо.

Пробел стоит в форматной строке. Почитай этот цикл статей с начала - я там описывал эту конструкцию
 
Artyom Trishkin #:
Пробел стоит в форматной строке. Почитай этот цикл статей с начала - я там описывал эту конструкцию

Да, извиняюсь. Я прочёл только до

Форматированный вывод свойств счёта

и дальше чуток перескочил… 

Это ещё раз подтверждает полезность твоих статей. Спасибо.

 
Artyom Trishkin #:
Отступ строки от левого края

Мои эксперименты показали, что отступ можно делать перед любым полем

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

/*
     Text_1            Text_2
*/
 
Alexey Viktorov #:

Мои эксперименты показали, что отступ можно делать перед любым полем

Естественно. В статье это показано просто как дополнение к справочным материалам на простом примере. Кто-то просто читает/не читает, а кто-то, увидев, экспериментирует и делает для себя полезные выводы ;)

ЗЫ. Теперь ты умеешь делать любой размер отступа/пробела, указанный переменной, в любом месте текстовой строки

 

Вот так можно указать числом сколько нужно пробелов поставить:

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

/*
     Text_1            Text_2
*/

Вообще, там, где используются цифры в форматной строке для указания разрядности чего-либо, можно подставить звёздочку, а в параметрах потом указать требуемое значение. Если использовать в своей функции, то в формальных параметрах передавать нужное значение для формирования строки с требуемой разрядностью/точностью/количеством знаков

 
Artyom Trishkin #:

Вот так можно указать числом сколько нужно пробелов поставить:

Вообще, там, где используются цифры в форматной строке для указания разрядности чего-либо, можно подставить звёздочку, а в параметрах потом указать требуемое значение. Если использовать в своей функции, то в формальных параметрах передавать нужное значение для формирования строки с требуемой разрядностью/точностью/количеством знаков

Я специально сделал по разному, звёздочкой * и непосредственно в форматной строке.

И ещё поэкспериментировал сохранить форматную строку в переменную типа string и её вставлять — работает. То-есть если надо несколько раз вывести однотипные строки, то можно применить переменную содержащую форматную строку, чтобы несколько раз не набирать её и не писать отдельную функцию.

 
Alexey Viktorov #:

Я специально сделал по разному, звёздочкой * и непосредственно в форматной строке.

И ещё поэкспериментировал сохранить форматную строку в переменную типа string и её вставлять — работает. То-есть если надо несколько раз вывести однотипные строки, то можно применить переменную содержащую форматную строку, чтобы несколько раз не набирать её и не писать отдельную функцию.

Пример бы ещё прикрепил...)