Консультация № 187499
30.06.2013, 20:36
86.53 руб.
0 3 1
Здравствуйте! У меня возникли сложности с таким вопросом: На форме 2 Мемо. В первое Мемо я загружаю эталонный файл, во второй файл для сравнения, мне нужно что бы одинаоквые данные (фамилии) во втором Мемо удалялись. Использую такой код
Код:
procedure TForm1.BitBtn1Click(Sender: TObject);
var
Find:string; //Искомая строка
i,n,:integer; //Счетчик для цикла
begin
for n:=0 to Memo1.Lines.Count-1 do begin
find:=Memo1.Lines[n]; // Запись в find текст из Memo1
For i:=0 to Memo2.Lines.Count-1 do //Запуск цикла
If Pos(FIND, Memo2.Lines.Text)<>0
Then
Begin
Memo2.SetFocus();
Memo2.SelStart:=Pos(FIND,Memo2.Lines.Text)-1;
Memo2.SelLength:=Length(FIND);
Memo2.SelText:='';


Строки удаляются, вроде как нет замечаний, Но остаются пустые строки.
Примерно так:

Иванов


Петров

Сидоров

То есть нужно удалить еще и пустые строки.
Благодарю за внимание.

Обсуждение

давно
Мастер-Эксперт
319965
1463
30.06.2013, 22:40
общий
это ответ
Здравствуйте, Владимир!
А почему бы не сделать по-другому
Код:

var
n,i: Integer;
begin
for n:=0 to Memo1.Lines.Count-1 do begin
i:=0;
while i<Memo2.Lines.Count do begin
if Memo2.Lines[i]=Memo1.Lines[n] then Memo2.Lines.Delete(i)
else Inc(i);
end;
end;
end;
давно
Профессионал
153662
1070
01.07.2013, 09:03
общий
Адресаты:
Здравствуйте. Ваш код не удалят строки, а просто делает их пустыми, а как удалять Вам уже дали ответ. Если надо удалят ещё и пустые строки можно к Вашему коду добавить:
Код:
var
i: Integer;
begin
i:= 0;
while i < Memo2.Lines.Count do
begin
if Memo2.Lines[i] = '' then
Memo2.Lines.Delete(i);
inc(i);
end;
end;
Об авторе:
Мои программы со статусом freeware для Windows на моём сайте jonix.ucoz.ru

давно
Посетитель
352040
133
01.07.2013, 09:53
общий
Адресаты:
Согласен. Так пожалуй будет гораздо лучше. Благодарю за помощь. Можно закрывать тему.
Об авторе:
Пользуюсь Delphi Enterprise Version7.
Форма ответа