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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.11.2010, 11:53   #1
Agafon
Пользователь
 
Регистрация: 09.11.2010
Сообщений: 12
По умолчанию Работа с текстом в Delphi

Здравствуйте, помогите пожалуйста. У меня такой вопрос:

У меня есть строка текста, скажем:

s:='Здравствуйте уважаемый Иван Иванович';

Как из этой строки выделить, скажем, первое и третье слово, чтобы на выходе получилось:

"Здравствуйте Иван"
Agafon вне форума Ответить с цитированием
Старый 13.11.2010, 12:01   #2
MaxNik2009
Форумчанин
 
Аватар для MaxNik2009
 
Регистрация: 17.09.2009
Сообщений: 294
По умолчанию

как вариант
Код:
var
  sl: TStringLIst;
  s: string;
begin
  s:='Здравствуйте уважаемый Иван Иванович';
  sl:= TStringLIst.Create;
  try
    s:= StringReplace(s, ' ', #13#10,[rfReplaceAll, rfIgnoreCase]); // меняем пробелы на перенос строки
    sl.Text:= s;
   { теперь sl выглядит так:
     sl[0] -> Здравствуйте 
     sl[1] -> уважаемый 
     sl[2] -> Иван 
     sl[3] -> Иванович}
  //состовляй строки как хочешь
  finally
    sl.free;
  end;
end;
p.s. писал код без delphi, по тому могут быть ошибки.
принимаю благодарности в письменном виде( весы слева)...

Последний раз редактировалось MaxNik2009; 13.11.2010 в 12:04.
MaxNik2009 вне форума Ответить с цитированием
Старый 13.11.2010, 12:55   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
StringReplace(s, ' ', #13#10
угу. и если перед словом "Уважаемый" (или перед "Здравствуйте") поставить парочку (или больше) пробелов, то не получится то, что нужно...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 13.11.2010, 13:02   #4
MaxNik2009
Форумчанин
 
Аватар для MaxNik2009
 
Регистрация: 17.09.2009
Сообщений: 294
По умолчанию

Код:
и если перед словом "Уважаемый" (или перед "Здравствуйте") поставить парочку (или больше) пробелов, то не получится то, что нужно...
можно же проитись по StringList'у в цикле и удалить пустые строки.
принимаю благодарности в письменном виде( весы слева)...
MaxNik2009 вне форума Ответить с цитированием
Старый 13.11.2010, 14:18   #5
Agafon
Пользователь
 
Регистрация: 09.11.2010
Сообщений: 12
По умолчанию

У меня такой вопрос появился?

Я могу определить длину строки в пикселях. Скажем, получилось 1600 рх, можно сделать так, чтобы текст, через каждые 600 рх переносился на новую строчку?

Последний раз редактировалось Agafon; 13.11.2010 в 14:20.
Agafon вне форума Ответить с цитированием
Старый 13.11.2010, 14:38   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
Canvas.TextWidth('Строка') - Даст ширину в пикселях.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 13.11.2010, 14:46   #7
Agafon
Пользователь
 
Регистрация: 09.11.2010
Сообщений: 12
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Код:
Canvas.TextWidth('Строка') - Даст ширину в пикселях.
Я это понимаю. Но я наверно чуть не так выразился. Я формирую строку (собираю её из разных мест), она может быть и 3000 рх и выше. А в результате я хочу её вывести ровными строками по 600 рх. Вот моя задача.
Agafon вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с текстом. J0n1cK Помощь студентам 1 30.05.2009 15:19
Работа с текстом MSD Общие вопросы Delphi 28 05.05.2009 17:56
Работа с текстом(C++) silent_witcher Помощь студентам 1 13.12.2008 17:55
Работа с текстом.[C] DropYourWeapon Общие вопросы C/C++ 3 15.10.2008 21:55