Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

String и повторяющиеся элементы [D7, XP]


cruiser ©   (2008-10-20 23:12:00) 

Здравствуйте мастера. Помогите с решением небольшой задачки.
Нужно из строки вида: 'Маша,Игорь,Яна,Яна,Маша,Анна,Игорь'  путем исключения повторяющихся элементов получить строку вида 'Маша,Игорь,Яна,Анна'. Причем количество и разновидность элементов (имен в данном случае) неизвестно. Заранее спасибо!


Германн   (2008-10-21 01:26:00) [1]


> cruiser ©   (21.10.08 00:33) [4]
>
> sniknik - всё работает! Спасибо еще раз огромное!
>

Хелп читать надо. И книжки тоже. Иначе будешь "такого понаворотил, что и сам запутался " всю жизнь! :)


cruiser   (2008-10-21 00:33:00) [2]

sniknik- всё работает! Спасибо еще раз огромное!


cruiser   (2008-10-21 00:32:00) [3]

Огромное спасибо, а то уже такого понаворотил, что и сам запутался :)
Вот что у меня выходило в коде и не работало:
var m,n:integer;
s1,s3,s2,s,sm:string;

begin
s:='';
s2:='';
s1:=edit1.Text;
s3:=s1;
for m := 1 to length(s1) do // ðàçáèðàåì ñòðîêó íà îòäåëüíûå ýëåìåíòû
 begin
  if s1[m]=',' then  // îñòàíîâèëèñü åñëè  ñèìâîë çàïÿòàÿ
  begin
   for n := 1 to length(s3) do  // ðàçáèðàåì ïðîìåæóòî÷íóþ ñòðîêó íà îòä ýë-òû
    begin
     if s3[n]=',' then
      begin
       if s2=s then
       begin
       sm:=sm+s2;
       s:='';
       end ;
       end
       else s:=s+s3[n]
      end;
     s2:='';
   end
  else
   begin
    s2:=s2+s1[m];
   end;
 end;
 showmessage (sm);
end;


sniknik   (2008-10-21 00:26:00) [4]

var sList: TStringList;
begin
 with TStringList.Create do
   try
     Sorted       := true;
     Duplicates   := dupIgnore;
     Delimiter    := ',';
     DelimitedText:= 'Маша,Игорь,Яна,Яна,Маша,Анна,Игорь';
     Edit1.Text:= DelimitedText;
   finally
     Free;
   end;
end;


MsGuns   (2008-10-20 23:59:00) [5]

Строку распарсить и пофрагменто записать в TStrings, предварительно проверяя на наличие аналога. Затем из TStrings собрать строку..


Наверх

Титульная страница Поиск, карта сайта Написать письмо