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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.10.2009, 14:29   #1
Lazio
Форумчанин
 
Регистрация: 25.02.2009
Сообщений: 113
По умолчанию Цикл do while при работе со строками.

Это опять я) вот продвигаюсь потихоньку. Столкнулся с проблемой абзацного членения текста, а именно хочу слить каждый абзац текста в отдельную строку RichEdit1->Lines->Strings[строка]

вот что есть
Код:
AnsiString Temp;

do{

for (int i=0; i<=RichEdit1->Lines->Count; i++){

Temp+=RichEdit1->Lines->Strings[i]+' ';



}

for (int i=0; i<=RichEdit1->Lines->Count; i++){
 RichEdit1->Lines->Strings[i+1]=' ';
}



 RichEdit1->Lines->Strings[0]=Temp;
} while ()
что поставить в while чтобы при достижении знака табуляции всё заканчивалось и как задать цикл, чтобы работало как то так:

Красная строка текст текст
текст текст бла бла.
Красная строка2. текст ляля
бубуqwerty).

а в итоге получалось вот так:

Красная строка текст текст текст текст бла бла. // Strings[0]
Красная строка2. текст лялябубуqwerty). // Strings[1]
Lazio вне форума Ответить с цитированием
Старый 11.10.2009, 14:45   #2
psycho-coder
Участник клуба
 
Аватар для psycho-coder
 
Регистрация: 06.04.2009
Сообщений: 1,524
По умолчанию

Например вот так:
Код:
  RichEdit1->Text = StringReplace(RichEdit1->Text, '\n', " ", rfReplaceAll);
psycho-coder вне форума Ответить с цитированием
Старый 11.10.2009, 14:49   #3
Lazio
Форумчанин
 
Регистрация: 25.02.2009
Сообщений: 113
По умолчанию

не. это походу сольет все 4 строки в одну) а мне надо именно по знаку отступа строки
Lazio вне форума Ответить с цитированием
Старый 11.10.2009, 15:05   #4
psycho-coder
Участник клуба
 
Аватар для psycho-coder
 
Регистрация: 06.04.2009
Сообщений: 1,524
По умолчанию

Ну вот как то так (по идее):
Код:
AnsiString tmp = "";
int index = 0
while (true)
{
	if (RichEdit1->Lines->Strings[index][1] == '\t')
		while (true)
		{
			if (RichEdit1->Lines->Strings[index+1][1] != '\t')
			{
				tmp = RichEdit1->Lines->Strings[index] + " " + RichEdit1->Lines->Strings[index+1];
				index++;
			}
			else break;
		}
	if (index >= RichEdit1->Lines->Count - 1) break;
}
P.S. Проверить не могу, Builder'a нет
psycho-coder вне форума Ответить с цитированием
Старый 11.10.2009, 15:18   #5
Lazio
Форумчанин
 
Регистрация: 25.02.2009
Сообщений: 113
По умолчанию

уже ничего но где то вылетаем за пределы или что-то такое) т.к. программа просто виснет)

мож кто ещё зайдет в тему?
Lazio вне форума Ответить с цитированием
Старый 11.10.2009, 15:20   #6
psycho-coder
Участник клуба
 
Аватар для psycho-coder
 
Регистрация: 06.04.2009
Сообщений: 1,524
По умолчанию

Трассировкой пройдись
psycho-coder вне форума Ответить с цитированием
Старый 11.10.2009, 15:55   #7
Lazio
Форумчанин
 
Регистрация: 25.02.2009
Сообщений: 113
По умолчанию

А как конечный текст ну выровнять по заданной ширине ну типа по аналогии кнопки в Word'е
Lazio вне форума Ответить с цитированием
Старый 11.10.2009, 16:11   #8
psycho-coder
Участник клуба
 
Аватар для psycho-coder
 
Регистрация: 06.04.2009
Сообщений: 1,524
По умолчанию

Как по ширине не знаю, но по краю можно так:
Код:
RichEdit1.Paragraph.Alignment := taRightJustify;
//taLeftJustify
//taRightJustify
//taCenter
Или в инспекторе объектов
psycho-coder вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Реализация функций Rexx по работе со строками в VBA tae1980 Microsoft Office Excel 19 17.03.2009 11:05
Проблема при работе с БД HAMMAN БД в Delphi 3 29.03.2008 14:42
Цикл с предусловием. ( цикл while) Цикл с постусловием. (цикл repeat ... until) Mr.User Помощь студентам 9 23.11.2007 01:34
нужна помощь по работе с строками файлов... Ruffian Общие вопросы Delphi 9 15.11.2006 16:05