Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 28.05.2010, 23:47
Fazotron Fazotron вне форума
Прохожий
 
Регистрация: 26.10.2009
Сообщения: 38
Репутация: 10
По умолчанию поиск нужного слова в строке

как можно найти каждое третье слово в строке, чтоб записать их в edit?
Код:
Var s:string;
begin
s:='ололо трололо хехехе пффф ыыы";
Edit1.Text:= ????
end;
т.е. тут получается 3е и 5ое слово. как это можно реализовать?


может быть, как-то в этом направлении:
Код:
n:=0;
sn:='';
for i :=0  to Length(s) do
if s[i]=' ' then
inc(n);
if n mod 3 = 0 then
sn:= sn + ????????
edit1.Text:=sn;
и не забываем о тэгах, а то я карaю несчадно
Aristarh Dark

Последний раз редактировалось Fazotron, 28.05.2010 в 23:53.
Ответить с цитированием
  #2  
Старый 29.05.2010, 00:05
Аватар для Aristarh Dark
Aristarh Dark Aristarh Dark вне форума
Модератор
 
Регистрация: 07.10.2005
Адрес: Москва
Сообщения: 2,907
Версия Delphi: Delphi XE
Репутация: выкл
По умолчанию

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

Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты.
Ответить с цитированием
  #3  
Старый 29.05.2010, 00:48
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,098
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Да ладно, парсер.
Разбить фразу на слова по пробелу можно таким путем:

Код:
var
  S : String;
  L : TStringList;
begin
  S := 'ололо трололо хехехе пффф ыыы";
  L := TStringList.Create;
  L.Text := StringReplace(S,' ',#13#10,[rfReplaceAll]);
  ...

Далее циклом ищешь свои 3-и слова (индекс в списке с 0).
Ответить с цитированием
  #4  
Старый 29.05.2010, 16:12
Fazotron Fazotron вне форума
Прохожий
 
Регистрация: 26.10.2009
Сообщения: 38
Репутация: 10
По умолчанию

Цитата:
Сообщение от lmikle
Далее циклом ищешь свои 3-и слова (индекс в списке с 0).
а цикл до какого элементе будет? всмысле как это написать?
Код:
For i:= 0 to ??
Ответить с цитированием
  #5  
Старый 29.05.2010, 16:17
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,723
Репутация: 52347
По умолчанию

Цикл у тебя будет от 0 до L.Count-1 но внутри цикла просто надо делать проверку на каждый 3-элемент. if i mod 3 = 0 then ...
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #6  
Старый 29.05.2010, 16:34
Fazotron Fazotron вне форума
Прохожий
 
Регистрация: 26.10.2009
Сообщения: 38
Репутация: 10
По умолчанию

Вот, почти получилось, только он берет с 4ого слова:
Код:
  sn:='';
  L := TStringList.Create;
  L.Text := StringReplace(S,' ',#13#10,[rfReplaceAll]);
For i:= 0 to L.Count-1 do
if (i mod 3 = 0) and (i<>0)  then
sn:= sn + ' ' + L[i];
Edit1.Text:=sn;

например, если текст "считать текст из файла на MEMO больше 10 слов каждое 3е слово записать в другой файл", то получается " файла больше каждое записать файл"
он походу в TString первое слово просто не записывает
как можно исправить?

сори за даблпостинг

Последний раз редактировалось Fazotron, 29.05.2010 в 17:34.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

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

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


Часовой пояс GMT +3, время: 17:23.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025