Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
0 / 0 / 0
Регистрация: 29.09.2019
Сообщений: 24
1

Задание в Delphi

04.11.2019, 10:55. Показов 983. Ответов 3

Author24 — интернет-сервис помощи студентам
В общем, дело такое. Данное задание на форуме уже опубликовалось (Разбиения текста на отдельные строки и выравнивание по правой границе ), но в нём результат выводился в Memo, а в моём случае нужно вывести в ListBox. Проблема в том, что у меня не получилось найти конкретного свойства листбокса, которое бы выводило результат в строки листбокса. В данный момент программа работает, но выводит каждый элемент с новой строки.

Сам задание: . Дана строка символов, содержащая некоторый текст на русском языке. Разработать программу форматирования этого текста, т.е. его разбиения на отдельные строки ( по k символов в каждой строке ) и выравнивания по правой границе путем вставки между отдельными словами необходимого количества пробелов.

И код:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
var k, i, j, x: integer;
    s: string;
begin
s:=Edit1.Text; //Исходная строка
k:=StrToInt(Edit2.Text); //По сколько разбивать
ListBox1.Clear;
 
//Заменим двойные пробелы в строке - одинарными
  While Pos('  ',s)<>0 Do s:=StringReplace(s,'  ',' ',[rfReplaceAll]);
 
  x:=1;
  j:=0;
  Repeat
      If s[x]=' ' Then
      Begin
      Inc(x); //Если первый символ новой строки пробел - пропускаем
      If x>Length(s) Then Break; //За пределами строки
      End;
 
      Repeat
        i:=j-1;
        j:=PosEx(' ',s,j+1);
      Until (j=0) Or ((j-x+1-1)>k);
 
      If j=0 Then j:=Length(s); //Если последний раз пробела не найдено - до конца строки
 
      If s[j]=' ' Then Dec(j); //Последний символ пробел - не берём
 
      If ((i>x) And ((j-x+1)>k)) Then j:=i; //Ранее пробелы находились - возвр. на пред найденную позицию
 
      If (j-x+1)>k Then
      ShowMessage('Слишком длинное слово. Не могу форматировать по '+IntToStr(k)+#13+
      Copy(s,x,j-x+1));
   
      ListBox1.Items.Add(Copy(s,x,j-x+1));
      Inc(j); //Начальная позиция следующего поиска
      x:=j;   //Начальная позиция следующей строки
  Until (j>Length(s));
end;
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.11.2019, 10:55
Ответы с готовыми решениями:

Задание по delphi
Есть поле ввода едит, и 3 лэйбела, и кнопка баттон, в кнопке написать нужно обработчик, что бы...

Delphi 14 задание
Помогите с 14 заданием, буду очень благодарен ))

задание по Delphi
Здравствуйте мне надо у компонента speedbutton у свойства Glyph выбрать картинку из стандартной...

Задание по delphi
На форме располагается один едит, кнопка и комбобокс. При вводе текста в поле едит. Например:...

3
Модератор
3635 / 2153 / 762
Регистрация: 15.11.2015
Сообщений: 8,644
04.11.2019, 10:59 2
dupple, плохо искал, значит. У ListBox это Items, а у Memo - Lines.
0
0 / 0 / 0
Регистрация: 29.09.2019
Сообщений: 24
04.11.2019, 11:01  [ТС] 3
Но ведь Items - это каждый символ. Только как вывести определённое количество символов в каждой строке...

P. S. Выше указал неправильную ссылку, вот - Дана строка символов, содержащая некоторый текст на русском языке . Разработать программу форматирования этого текста
0
Модератор
3635 / 2153 / 762
Регистрация: 15.11.2015
Сообщений: 8,644
04.11.2019, 11:04 4
dupple, посмотри тип этого Items - TStrings. Это строки, которые отображаются в ListBox.

Если надо ограничивать длину строки, то это надо делать до добавления в ListBox.
0
04.11.2019, 11:04
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.11.2019, 11:04
Помогаю со студенческими работами здесь

Задание в Delphi Borland 7
У меня есть программа с заданиями: Сколько раз встречается в одномерном массиве макс и мин...

Практическое задание по Delphi
Необходимо в Delphi разработать программу для поиска в неупорядоченной таблице. Не знаю с чего...

Задание даты в Delphi
Добрый день.подскажите пожалуйста: мне требуется выполнять по расписанию (например каждый четверг...

Перекомпоновка задание на Delphi из паскаля
Здравствуйте дали задание. Реализовать задачу по обработке одномерных массивов. Дан одномерный...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru