Но значение -1 не работает как заявлено. Форматируется в 1 символ как с любым другим числом. В сорцах какой-то специальной обработки значения -1 я тоже не нашел (хотя может и не там искал). Забыли реализовать или баг?Ширина поля (примером может служить ширина колонки в панели). При значении равном -1 подразумевается - "сколько получится".
FormatFileSize и параметр Width
-
- Posts: 1351
- Joined: Fri 30 Nov, 2007 15:32
- Location: Крым
- Has thanked: 15 times
- Been thanked: 50 times
- Contact:
FormatFileSize и параметр Width
В документации к функции FormatFileSize сказано
- DrKnS
- Posts: 6114
- Joined: Thu 04 Aug, 2005 06:44
- Location: Kyiv
- Has thanked: 12 times
- Been thanked: 426 times
FormatFileSize и параметр Width
Я поправлю, только расскажите, как это чудо должно работать.
В документации написано что-то странное:
Я вызвал в цикле от -15 до 15, результаты:
Т. е. положительная ширина - это абсолютная ширина, не больше и не меньше.
А отрицательная - внезапно, минимальная.
В документации написано что-то странное:
И функция в 4833 ведет себя не по документации.При значении равном -1 подразумевается - "сколько получится". Отрицательное значение ширины позволяет выравнивать слева.
Я вызвал в цикле от -15 до 15, результаты:
Code: Select all
-15: "12 345 "
-14: "12 345 "
-13: "12 345 "
-12: "12 345 "
-11: "12 345 "
-10: "12 345 "
-9: "12 345 "
-8: "12 345 "
-7: "12 345 "
-6: "12 345"
-5: "12 345"
-4: "12 345"
-3: "12 345"
-2: "12 345"
-1: "12 345"
0: ""
1: "1"
2: "12"
3: "12 "
4: "12 3"
5: " 12 К"
6: "12 345"
7: " 12 345"
8: " 12 345"
9: " 12 345"
10: " 12 345"
11: " 12 345"
12: " 12 345"
13: " 12 345"
14: " 12 345"
15: " 12 345"
А отрицательная - внезапно, минимальная.
-
- Posts: 6836
- Joined: Thu 23 Mar, 2006 21:36
- Location: Israel
- Has thanked: 41 times
- Been thanked: 530 times
FormatFileSize и параметр Width
Да, документация не описывает точно реальное поведение в 4833.
Но: в случае Width==-1 билд 4833 ведёт себя согласно документации, а последующие - нет. О случае Width==-1 и писал автор темы.
Как должно себя вести - можно дискутировать. В любом случае желательно, чтобы описание было более адекватным.
-
- Posts: 6836
- Joined: Thu 23 Mar, 2006 21:36
- Location: Israel
- Has thanked: 41 times
- Been thanked: 530 times
FormatFileSize и параметр Width
Возражение может быть такое: API то у нас заморожено и меняться не должно. Те плагины, которые рассчитывали на "сколько получится" при -1, начнут показывать неправильный размер.
FormatFileSize и параметр Width
-1: абсолютная ширина 1, выравнивание влево == +1: абсолютная ширина 1, выравнивание вправо ??
Поэтому можно -1 отдать (оставить) на особый случай. А -2 и дальше переделать.
Хотя 0, конечно, более логичный 'особый случай'.
Поэтому можно -1 отдать (оставить) на особый случай. А -2 и дальше переделать.
Хотя 0, конечно, более логичный 'особый случай'.
Last edited by 2useven10 on Tue 16 May, 2017 23:27, edited 1 time in total.
- DrKnS
- Posts: 6114
- Joined: Thu 04 Aug, 2005 06:44
- Location: Kyiv
- Has thanked: 12 times
- Been thanked: 426 times
FormatFileSize и параметр Width
Господа, ещё такой философский вопрос.
Допустимо ли тупо резать результат по правому краю, если он не лезет в заказанном формате в заказанный размер?
См. помеченные "???" строки в колонках ниже.
Не лучше ли в таком случае возвращать пустую строку как сигнал "не влезло, увеличь ширину", чем огрызок, дающий ложное представление о результате?
Допустимо ли тупо резать результат по правому краю, если он не лезет в заказанном формате в заказанный размер?
См. помеченные "???" строки в колонках ниже.
Code: Select all
"123456789 B " "117,74 M "
"123456789 B " "117,74 M "
"123456789 B" "117,74 M "
"120563 K " "117,74 M "
"120563 K " "117,74 M "
"120563 K" "117,74 M"
"118 M " "117,74 " ???
"118 M " "117,74" ???
"118 M" "117,7" ???
"0 G " "117," ???
"0 G" "117" ???
"12" ??? "11" ???
"1" ??? "1" ???
FormatFileSize и параметр Width
Imho, просто резать плохо, можно, например так:
Code: Select all
"118 M " "117,74…" ???
"118 M " "117,7…" ???
"118 M" "117,…" ???
"0 G " "117…" ???
"0 G" "11…" ???
"1…" ??? "1…" ???
"…" ??? "…" ???
-
- Posts: 1351
- Joined: Fri 30 Nov, 2007 15:32
- Location: Крым
- Has thanked: 15 times
- Been thanked: 50 times
- Contact:
FormatFileSize и параметр Width
У меня, конечно, права голоса нет, но на правах автора темы вставлю 5 копеек
Поддерживаю такой вариант, будет более логичным.DrKnS wrote:0: сколько получится.
По доке функция возвращает необходимую ширину буфера. По идее, мы можем проверить влезло или нет сравнив это значение с заказанной шириной.DrKnS wrote:Не лучше ли в таком случае возвращать пустую строку как сигнал "не влезло, увеличь ширину", чем огрызок, дающий ложное представление о результате?
Можно флажочек новый добавить, просто обрезать или с многоточием.2useven10 wrote:Imho, просто резать плохо, можно, например так:
- HaRT
- Moderator
- Posts: 10863
- Joined: Tue 30 Aug, 2005 17:21
- Has thanked: 221 times
- Been thanked: 358 times
FormatFileSize и параметр Width
2useven10, тогда на положение многоточия должно влиять заказанное выравнивание.
Фар есть инструмент, а не нянька. © 2009 DrKnS
FormatFileSize и параметр Width
Это отдельный вопрос/флаг: какую часть строки обрезать при выравнивании вправо (сейчас обрезается хвост).
И может быть имеет смысл добавить ещё один режим: не обрезать вообще...
- HaRT
- Moderator
- Posts: 10863
- Joined: Tue 30 Aug, 2005 17:21
- Has thanked: 221 times
- Been thanked: 358 times
FormatFileSize и параметр Width
Вот с этим-то я как раз и не согласен. При выравнивании влево отрезАть хвост, при выравнивании вправо — голову.
Но для строк ещё осмысленно иногда усекать середину, и вот это существующим указанием выравнивания уже не регулируется. Поэтому, если добавлять параметры, то, возможно, стоило бы задавать выравнивание и способ усечения явно и по отдельности.
Фар есть инструмент, а не нянька. © 2009 DrKnS