Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.06.2015, 12:25   #1
S_007
Форумчанин
 
Регистрация: 22.11.2014
Сообщений: 109
По умолчанию Принудительный перенос текста в строке по условию - Delphi

Нагуглил много примеров на эту тему, но так как мне надо не нашел...
Есть строка, в ней через запятую и пробел набраны слова, слова могут быть всякие и разной длины

Код:
stroka := 'Понедельник, Вторник, Среда, Четверг, Пятница, Суббота, Воскресенье';
известно - в Мемо по ширине помещается 50 символов
этим кодом проверяю сколько символов в строке

Код:
a := Length(stroka);
Вопрос: Какой функцией можно справа налево найти первый пробел и вставить туда #13#10 для принудительного переноса, прописать в этом условии?

Код:
if a > 50 then ....
S_007 вне форума Ответить с цитированием
Старый 07.06.2015, 12:29   #2
newerow1989
Я самый любопытный
Участник клуба
 
Аватар для newerow1989
 
Регистрация: 24.07.2012
Сообщений: 1,949
По умолчанию

Код:
For i:=50 downto 1 do
   If stroka[i]=' ' then
   begin
      //вставка #13#10
      Insert(#13#10,stroka,i);//эта строчка примерная
      Break;
   end;
С запрограммированным приветом, Неверов Евгений!
Сайт: http://newerow1989.ru
[Паскаль] [Delphi]
newerow1989 вне форума Ответить с цитированием
Старый 07.06.2015, 12:32   #3
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
в Мемо по ширине помещается 50 символов
Шрифт моноширинный?
Цитата:
Какой функцией можно справа налево найти первый пробел и вставить туда #13#10
Ни какой. Вернее композицией типа ReverseString и Pos можно, но ни чего это не даст. Цикл от конца с поиском пробела и анализом оставшейся длины
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 07.06.2015, 14:22   #4
S_007
Форумчанин
 
Регистрация: 22.11.2014
Сообщений: 109
По умолчанию

Спасибо за ответы! Пожалуй остановлюсь на примере newerow1989 Спасибо огромное!
Аватар, и Вам огромное спасибо! Вы как всегда правильно и вовремя все подмечаете... Я совершенно не учел что шрифты есть пропорциональные и моноширинные...
Шрифт буду использовать стандартный Arial. И мне нужно получается проверять не количество символов а количество пикселей, Счас попробую поискать где-то натыкался на такое
S_007 вне форума Ответить с цитированием
Старый 07.06.2015, 14:23   #5
newerow1989
Я самый любопытный
Участник клуба
 
Аватар для newerow1989
 
Регистрация: 24.07.2012
Сообщений: 1,949
По умолчанию

Пожалуйста!
С запрограммированным приветом, Неверов Евгений!
Сайт: http://newerow1989.ru
[Паскаль] [Delphi]
newerow1989 вне форума Ответить с цитированием
Старый 07.06.2015, 14:35   #6
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

может, нужен тупой WordWrap?
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 07.06.2015, 16:33   #7
S_007
Форумчанин
 
Регистрация: 22.11.2014
Сообщений: 109
По умолчанию

WordWrap, к сожалению не подходит, я немного не дописал суть, ну к примеру встретится в строке - Петр Николаевич, WordWrap сработает и например оставит Петр на первой строке, а Николаевич перенесет - некрасиво и по задумке не подходит.... Да я немного неправильно в первом посте написал, придется отслеживать не по пробелу, а запятая пробел ', '
Замерять пиксели тоже иметь дело с канвой не хочется...
Может как-то можно с помощью функции Length вычислять среднее количество символов или что-то в этом роде?
S_007 вне форума Ответить с цитированием
Старый 07.06.2015, 16:48   #8
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

с помощью функции Length можно получить только абсолютное количество символов. и всё.

что за монстра ты рожаешь?
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 07.06.2015, 20:11   #9
S_007
Форумчанин
 
Регистрация: 22.11.2014
Сообщений: 109
По умолчанию

Не, совсем не монстра, логика такая, пользователь на форме выбирает нужные словосочетания, которые потом нужно напечатать, в Rave Report в поле Мемо отправляю набранную из этих словосочетаний через запятую и пробел строку, Мемо и сама может переносить слова если не влазят по ширине, по ближайшему правому пробелу в строке, можно было бы оставить и так, но хотелось добиться контроля, чтоб словосочетания переносились полностью на следующую строку, так бы было бы правильней, вот только в этом собственно вся и загвоздка...

Последний раз редактировалось S_007; 07.06.2015 в 20:14.
S_007 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перенос данных с ячейки в ячейку по условию Perova irina Microsoft Office Excel 13 25.01.2015 17:08
Перенос данных из закрытой книги по условию strannick Microsoft Office Excel 14 14.12.2013 16:29
Перенос текста в DB Access. Delphi hemn6vyr Помощь студентам 0 03.03.2013 17:42
перенос строк в другой лист по условию dzaymko Microsoft Office Excel 4 23.04.2012 12:16
перенос строк на другую страницу по условию Настасия Microsoft Office Excel 33 20.06.2011 15:41