|
07.12.2005, 16:39 | #1 |
Участник
|
Перенос строк по словам
Добрый день. Встала проблема переноса текста по словам в отчетах.
Т.е. есть текстовая переменная большой длины; известно, сколько знаков уместится в каждом поле. Если делать через COPYSTR, то программе все равно, как слова разобьются. А нужно нормально переносить слова (целиком, по частям слова переносить нет необходимости). Если кто-нибудь делал, не поделитесь кодом, как Вы это организовали? Заранее спасибо. |
|
07.12.2005, 18:26 | #2 |
Участник
|
Есть функция STRPOS с ее помощью находите первый пробел, обрезаете до этой позиции. Проверяете длину получившегося куска.
Записываете результат в буфур. Находите в оставшейся строке превый пробел обрезаете и проверяете длину второго куска + длина в буфере , если в сумме меньше чем вам нужно, прибавляете к буферу если больше переносите буфер в строку и заполняете буфер вторым куском... похоже проще было на C/AL написать
__________________
Want to believe... |
|
08.12.2005, 10:16 | #3 |
Участник
|
Цитата:
Сообщение от DA_NEAL
похоже проще было на C/AL написать
А мультилайн действительно не подходит, из-за того, что выводятся всегда все строки, даже если занята только одна. |
|
07.12.2005, 18:32 | #4 |
Участник
|
Непонятна задача. А почему свойство MultiLine не проходит?
|
|
08.12.2005, 06:40 | #5 |
Участник
|
Цитата:
Сообщение от konrad
Непонятна задача. А почему свойство MultiLine не проходит?
Т.е если текст максимальной длины разобъется на 5 строк, дык придется всегда выводить 5 строк, даже если в конкретном отчете достаточно одной. Не оч красиво это. |
|
07.12.2005, 18:44 | #6 |
NavAx
|
Ну если уж совсем ровно считать, то надо учитывать и то, что буковка "щ" подлиннее будет, чем буковка "т"
__________________
"Моей лошадке ядрышком полмордочки снесло..." А.В.Суворов, письма к дочери |
|
08.12.2005, 11:48 | #7 |
Участник
|
Спасибо всем, кто откликнулся.
Сделал функцию, которая на входе получает длинную текстовую переменную и количество знаков в строке, исходя из которого надо разбивать текст. В функции набираю в текстовый массив части исходного текста в соответствии с заданным размером (по алгоритму, описанному DA_NEAL). На выходе из функции - массив текстовых переменных, разбитых по словам, и размер которых не превышает заданный. |
|