AXForum  
Вернуться   AXForum > Microsoft Dynamics NAV > NAV: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 07.12.2005, 16:39   #1  
vel_vel is offline
vel_vel
Участник
 
8 / 10 (1) +
Регистрация: 07.12.2005
Перенос строк по словам
Добрый день. Встала проблема переноса текста по словам в отчетах.
Т.е. есть текстовая переменная большой длины; известно, сколько знаков уместится в каждом поле. Если делать через COPYSTR, то программе все равно, как слова разобьются. А нужно нормально переносить слова (целиком, по частям слова переносить нет необходимости).
Если кто-нибудь делал, не поделитесь кодом, как Вы это организовали? Заранее спасибо.
Старый 07.12.2005, 18:26   #2  
DA_NEAL is offline
DA_NEAL
Участник
Аватар для DA_NEAL
Лучший по профессии 2017
Лучший по профессии 2009
 
788 / 54 (3) ++++
Регистрация: 05.08.2002
Адрес: Королев
Есть функция STRPOS с ее помощью находите первый пробел, обрезаете до этой позиции. Проверяете длину получившегося куска.
Записываете результат в буфур. Находите в оставшейся строке превый пробел обрезаете и проверяете длину второго куска + длина в буфере , если в сумме меньше чем вам нужно, прибавляете к буферу если больше переносите буфер в строку и заполняете буфер вторым куском...

похоже проще было на C/AL написать
__________________
Want to believe...
Старый 07.12.2005, 18:32   #3  
konrad is offline
konrad
Участник
 
6 / 10 (1) +
Регистрация: 28.10.2005
Непонятна задача. А почему свойство MultiLine не проходит?
Старый 07.12.2005, 18:44   #4  
Yoil is offline
Yoil
NavAx
NavAx Club
Лучший по профессии 2017
Лучший по профессии 2009
 
1,574 / 70 (6) ++++
Регистрация: 20.11.2002
Адрес: Msk
Ну если уж совсем ровно считать, то надо учитывать и то, что буковка "щ" подлиннее будет, чем буковка "т"
__________________
"Моей лошадке ядрышком полмордочки снесло..."
А.В.Суворов, письма к дочери
Старый 08.12.2005, 06:40   #5  
Rokhay is offline
Rokhay
Участник
 
154 / 15 (1) ++
Регистрация: 02.10.2003
Адрес: Ебург
Цитата:
Сообщение от konrad
Непонятна задача. А почему свойство MultiLine не проходит?
Для мультилайна надо резервировать необходимое количество строк .
Т.е если текст максимальной длины разобъется на 5 строк, дык придется всегда выводить 5 строк, даже если в конкретном отчете достаточно одной. Не оч красиво это.
Старый 08.12.2005, 10:16   #6  
vel_vel is offline
vel_vel
Участник
 
8 / 10 (1) +
Регистрация: 07.12.2005
Цитата:
Сообщение от DA_NEAL
похоже проще было на C/AL написать
Буду очень благодарен, если приведете код. Хотя, мысль понятна (я пытался от конца искать пробел - не очень получалось, слишком много условий было).
А мультилайн действительно не подходит, из-за того, что выводятся всегда все строки, даже если занята только одна.
Старый 08.12.2005, 11:48   #7  
vel_vel is offline
vel_vel
Участник
 
8 / 10 (1) +
Регистрация: 07.12.2005
Спасибо всем, кто откликнулся.
Сделал функцию, которая на входе получает длинную текстовую переменную и количество знаков в строке, исходя из которого надо разбивать текст. В функции набираю в текстовый массив части исходного текста в соответствии с заданным размером (по алгоритму, описанному DA_NEAL).
На выходе из функции - массив текстовых переменных, разбитых по словам, и размер которых не превышает заданный.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Перенос отпуска и налогов к нему на 97 счет konrad NAV: Функционал 8 13.12.2005 10:15
Модификация выделенных строк Migel_84 NAV: Программирование 6 06.12.2005 10:34
Перенос данных в NAVISION BusyMan NAV: Функционал 5 15.11.2004 15:29
Выгрузка строк в файл Mary NAV: Программирование 6 23.07.2004 16:20
Формирование строк заявок на закупку товаров в MBS-Navision 3.60RU SP3 Консультант NAV: Функционал 2 16.07.2003 16:30

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 01:01.