Показать сообщение отдельно
  #1  
Старый 08.06.2012, 17:04
Arlain Arlain вне форума
Прохожий
 
Регистрация: 21.04.2012
Сообщения: 3
Репутация: 10
Печаль Изменение текста в Memo

Помогите пожалуйста, надо срочно сделать до конца выходных...
В программе, в мемо выводится текст вида:
МДОУ №1 МДОУ №11
МДОУ №1 МДОУ №12
МДОУ №1 МДОУ №14
МДОУ №10 МДОУ №54
МДОУ №11 МДОУ №1
МДОУ №11 МДОУ №12
МДОУ №11 МДОУ №14 и т.д.
мне надо чтоб небыло повторов одинаковых МДОУ
(например чтоб было так -
МДОУ №1 МДОУ №11 МДОУ №12 МДОУ №14
МДОУ №10 МДОУ №54
и т.д.)
я знаю что это надо делать через функции Pos, Copy и Delete, но у меня не получается... - вот мой код если это необходимо.
Код:
var n,ps,i,j:integer; s2,s1,s,cp1,cp2:string;
begin
n:=Memo2.Lines.Count;
For i:=0 to n-1 do begin
  s:=Memo2.Lines[i];
  cp1:=Copy(s,1,8); // копируем первые 8 символов
  s2:='';
  for j:=0 to n-1 do begin
    s1:=Memo2.Lines[j];
    cp2:=Copy(s1,1,8);
    if (cp2=cp1) and (j>i) then begin
    PS:=AnsiPos(cp1,s1);  //ищем совпадение в строке
    If (PS<>0) and (s1<>s) then begin Delete(s1,ps,8); s2:=s2+' '+s1; end;
    end;
    end;
  Memo2.Lines[i]:=s+' '+s2;
end;

n:=Memo2.Lines.Count; //пересчёт количества строк
for i:=0 to n-1 do begin
  s:=Memo2.Lines[i];
  cp1:=Copy(s,1,8);
  for j:=0 to n-1 do begin
    s1:=Memo2.Lines[j];
    cp2:=Copy(s1,1,8);
    PS:=AnsiPos(cp1,s1);
    if (j>i) and (cp1=cp2) then begin memo2.Lines.Delete(j); end;
  end;
end;
Ответить с цитированием