Этот топик читают: Гость
Гость
Ответов: 17029
Рейтинг: 0
|
|||
Редактировалось 1 раз(а), последний 2017-03-03 06:43:00 |
|||
карма: 0 |
|
Ответов: 5446
Рейтинг: 323
|
|||
Можно.
Простой путь - "забыть" о правилах переноса и переносить по словам. Это несложно (но зато почти вся вкладка String будет задействована). Более сложный путь - поиметь библиотеку переносов, и заполнять строки сначала целыми словами, а потом остаток пробовать добить с переносом. P.S. Если бы ещё понять, что значит 1й пункт, то было бы проще. Если я правильно понял, то это число пробелов в начале каждой строки. Тогда 3й пункт - ширина даётся с учётом этих пробелов или нет? |
|||
карма: 1 |
|
Гость
Ответов: 17029
Рейтинг: 0
|
|||
Редактировалось 1 раз(а), последний 2017-03-03 06:43:00 |
|||
карма: 0 |
|
Ответов: 1397
Рейтинг: 50
|
|||
На форуме, правда давно уже была схема для выравнивания строк пробелами. Да и смастерить вновь такую тоже не должно вызвать трудностей.
|
|||
карма: 0 |
|
Гость
Ответов: 17029
Рейтинг: 0
|
|||
Редактировалось 1 раз(а), последний 2017-03-03 06:43:01 |
|||
карма: 0 |
|
Ответов: 5446
Рейтинг: 323
|
|||
г. Nules, а что там такого сложного? Разбиваем строку (абзац) на слова (по пробелам, знаки препинания являются частью слов). Далее формируем строки, по очереди "считывая" слова пока следующее слово (с учётом пробелов) влезает в строку. Если влезло ровно-ровно, то строка готова. Иначе считаем, сколько пробелов надо до заданной длины строки. После чего в цикле добавляем пробелы куда можно (по кругу), пока не закончим формировать строку. Строка готова!
|
|||
карма: 1 |
|
Гость
Ответов: 17029
Рейтинг: 0
|
|||
Редактировалось 1 раз(а), последний 2017-03-03 06:43:01 |
|||
карма: 0 |
|
Ответов: 5446
Рейтинг: 323
|
|||
г. Nules, какая буква непонятна?
Пусть очередная собранная строка состоит из Nw слов W[i] (i = 0..Nw-1) "считаем, сколько пробелов надо до заданной длины строки" [Nsp] = максимальная длина строки [Lmax] - длина собранной строки [Lcur] "в цикле добавляем пробелы":
А, ну и ещё маленькая тонкость: все мои рассуждения теряют силу для не-моноширинных шрифтов. В этом случае придётся использовать менее красивый метод с измерением длины в пикселях через GetTextExtent |
|||
карма: 1 |
|
Гость
Ответов: 17029
Рейтинг: 0
|
|||
Редактировалось 1 раз(а), последний 2017-03-03 06:43:01 |
|||
карма: 0 |
|
Ответов: 5446
Рейтинг: 323
|
|||
г. Nules, я напряг свои мозги, и сделал требуемую схему. И она даже работает. В процессе пришлось несколько поменять алгоритм заполнения строки проблеами до заданной длины:
* После набора максимально длинной строки (Lcur) вычисляем, сколько нам не хватает пробелов до заданной длины (Nsp = Lmax - Lcur) * Делим Nsp нацело (div) на число промежутков между словами (Nw - 1) и добавляем 1, это даёт нам (минимальное) число пробелов между словами * Считаем остаток (mod) от деления Nsp на (Nw - 1) - это даст нам число позиций (Isp) , в которые надо будет вставлять дополнительный пробел * Теперь для каждого слова W: ** Присоединяем сзади строку из пробелов длины Nsx ** Если порядковый номер слова меньше Isp, то присоединяем с конца ещё один пробел ** Полученное супер-слово присоединяем сзади к некой временной строке, которая содержит все уже обработанные супер-слова * Полученную временную строку Trim-аем (удаляем лишние пробелы в конце строки) -> очередная строка готова |
|||
карма: 1 |
|
Ответов: 8926
Рейтинг: 823
|
|||
iarspider, четыре дня , не выдержал, правда сейчас уезжаю в не цивилизованные края (до сентября), поэтому пяти минут не хватило довести до ума, но в качестве затравки пойдёт code_14365.txt
До свидания! |
|||
карма: 19 |
| ||
файлы: 1 | code_14365.txt [11.4KB] [290] |
Разработчик
Ответов: 26151
Рейтинг: 2127
|
|||
Леонид, я понимаю, конечно, что это ты реализовал отступы, но это не выравнивание по ширине
|
|||
карма: 22 |
|
Разработчик
Ответов: 26151
Рейтинг: 2127
|
|||
Вот, для затравки, что получилось, осталось сделать обрезку строки по количеству символов
code_14373.txt |
|||
карма: 22 |
| ||
файлы: 1 | code_14373.txt [7.9KB] [242] |
Ответов: 5446
Рейтинг: 323
|
|||
Раз пошла такая пьянка... (с) Схема не претендует на оптимальность, это скроее Proof-of-Concept (доказательство возможности)
|
|||
карма: 1 |
| ||
файлы: 1 | textpadd.sha [11.9KB] [294] |
Разработчик
Ответов: 26151
Рейтинг: 2127
|
|||
Похоже, что мы чела своими схемами сильно напугали, он, поди, думал, что все гораздо проще
|
|||
карма: 22 |
|