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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.10.2011, 09:40   #1
Сароникус
Пользователь
 
Регистрация: 01.10.2011
Сообщений: 12
Восклицание Delphi7. Копирование не повторяющихся слов

Люди, уже который день бьюсь над задачкой. Нужно из Edit1 копировать все слова, которые встречаются только 1 раз (т.е. если есть два одинаковых слова, то ни одно из них не копировать), в Edit2. Часть задачи сделал, но её нужно подправить ^_^

Код:
procedure TForm1.Button1Click(Sender: TObject);
var s, ss : string;
begin
 Edit2.Text:='';
 S:=Edit1.Text;       // Просто чтобы не писать каждый раз Edit1.Text
 while Pos('.',S)>0 do    // Здесь мне нужно сделать так, чтобы задание работало только до точки
 begin
  ss:=copy(s,0,Pos(' ',S));   // Копируемое слово
  delete(S,0,Pos(' ',S));
  if (Pos(ss,S)<0) and (Pos(ss,S)<0) then   // Если копируемое слово больше нигде не повторяется
    Edit2.Text:=Edit2.Text + ss; // то копируем его сюда
 end;
end;

end.
Заранее благодарен за помощь!
Сароникус вне форума Ответить с цитированием
Старый 28.10.2011, 11:44   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

а попробуйте такое решение:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var TS : TStringList;
    i, IndexFound : integer;
    s, sResult  : string;
begin
 TS := TStringList.Create;
 sResult := '';
 try
   TS.Delimiter := ' ';
   TS.CaseSensitive := false;
   TS.DelimitedText := Edit1.Text;

   for I := 0 to TS.Count - 1 do begin
     s := TS.Strings[i];
     if Length(s)>0 then begin
       TS.Strings[i] := ''; {стёрли слово, чтобы оно не находилось поиском}
       IndexFound := TS.IndexOf(s);
       if IndexFound<0 then
          if length(sResult)=0 then sResult := s else sResult := sResult + ' ' + s
       else {если такие слова в строке есть - сотрём из напрочь} begin
         while IndexFound>=0 do begin
           TS.Strings[IndexFound] := '';
           IndexFound := TS.IndexOf(s);
         end;
       end;
     end;
   end;
 finally
   FreeAndNil(TS);
   Edit2.Text := sResult;
 end;
end;
Serge_Bliznykov вне форума Ответить с цитированием
Старый 28.10.2011, 18:44   #3
Сароникус
Пользователь
 
Регистрация: 01.10.2011
Сообщений: 12
По умолчанию

ох...Я таких то слов не знаю...)) Впрочем мне уже помогли сделать, но всё равно я выражаю Вам свою благодарность за помощь!
Сароникус вне форума Ответить с цитированием
Ответ


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

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

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
копирование листинга из delphi7 tred Общие вопросы Delphi 4 22.10.2011 18:15
Поиск повторяющихся слов и их удаление!!!!!!!! в делфи Ejevila Помощь студентам 2 20.12.2010 21:55
Удаление повторяющихся слов C vivo89 Помощь студентам 2 24.12.2009 09:18
по вводу слов в массив и подсчёт введённых слов -ushёl- Общие вопросы C/C++ 4 16.11.2009 00:45
Составить в алфавитном порядке список всех слов, встречающихся в тексте, и количество этих слов. KAPAHDAW Паскаль, Turbo Pascal, PascalABC.NET 2 17.02.2009 01:19