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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.08.2009, 09:37   #1
Des
Форумчанин
 
Регистрация: 12.11.2008
Сообщений: 124
По умолчанию Сравнение строк, добавление если false

Здравствуйте! Столкнулся со следующей задачей.
Имеется строка edit_adress (Edit) которую нужно добавить в memo_ban (TMemo) при условии что в мемо еще нет этой строки. Пробывал реализовать следующим путем (см. код) и конечно ничего не вышло

Код:
for  i:=0 to form_ban.memo_ban.Lines.Count do
    if Form1.edit_adress.Text <> form_ban.memo_ban.Lines.Strings[i] then begin
    form_ban.memo_ban.Lines.Add(Form1.edit_adress.Text);
    end;
Des вне форума Ответить с цитированием
Старый 20.08.2009, 09:49   #2
Баламут
Баламучу слегка...
Участник клуба
 
Аватар для Баламут
 
Регистрация: 01.11.2006
Сообщений: 1,585
По умолчанию

Правда с некоторыми оговорками можно вот так попробовать
Код:
if Pos(Edit1.Text, Memo1.Text) = 0 then Memo1.Lines.Add(Edit1.Text);
Баламут вне форума Ответить с цитированием
Старый 20.08.2009, 10:16   #3
Des
Форумчанин
 
Регистрация: 12.11.2008
Сообщений: 124
По умолчанию

Цитата:
Сообщение от Баламут Посмотреть сообщение
Правда с некоторыми оговорками можно вот так попробовать
Код:
if Pos(Edit1.Text, Memo1.Text) = 0 then Memo1.Lines.Add(Edit1.Text);
Оговорка я так понимаю в кол-ве строк? У меня их будет свыше 200 000

ОК. В общем как я понимаю основная и наверное лучшая идея это поиск. Если так то с этим я разберусь, по ним у меня курсовая была

Последний раз редактировалось Stilet; 20.08.2009 в 10:27.
Des вне форума Ответить с цитированием
Старый 20.08.2009, 10:25   #4
Баламут
Баламучу слегка...
Участник клуба
 
Аватар для Баламут
 
Регистрация: 01.11.2006
Сообщений: 1,585
По умолчанию

Нет, количество строк здесь совершенно ни при чем. "Оговорка" касается ситуации, когда текст из Эдита является частью произвольной строки из мемо
Баламут вне форума Ответить с цитированием
Старый 20.08.2009, 10:30   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
при условии что в мемо еще нет этой строки. Пробывал реализовать следующим путем (см. код) и конечно ничего не вышло
Во-первых: Смени подпись.
Во-вторых: Можно воспользоваться свойством TStringList.Duplicates для отсечения дубликатов, для этого нужно добавлять из Эдита в переменку этого типа, и ловить исключение EStringListError. которое укажет о том что такое в списке уже есть.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 20.08.2009, 11:50   #6
Altera
Старожил
 
Аватар для Altera
 
Регистрация: 29.01.2008
Сообщений: 2,406
По умолчанию

2Stilet, хороший способ! Но, если у чувака "свыше 200 000" строк, как-бы копирование tStringList в tMemo.lines лишние ресурсы не покушало. А если вот так:
Код:
procedure Tmain_form.Button2Click(Sender: TObject);
begin
   if listBox1.Items.IndexOf(ansiUpperCase(edit2.Text)) = -1 then
      listBox1.Items.Add(ansiUpperCase(edit2.Text))
   else
      showMessage('Строка уже имеется!');
end;
У меня правда для ltListBox.items, но под tMemo.lines тоже работает.

2Des, подпись смени, мало того что не цензурная, так к тому же ещё и глупая...
Altera вне форума Ответить с цитированием
Старый 20.08.2009, 12:32   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
как-бы копирование tStringList в tMemo.lines лишние ресурсы не покушало.
А кто сказал про копирование? Если исключение есть строка не добавляется в Мемо всего-то.
tStringList я предложил для анализа дубликатства. но я не говорил что из него потом вся инфа пойдет.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
сравнение строк -? Evgenii Общие вопросы Delphi 10 15.07.2009 15:28
С++. Сравнение строк maxlav Помощь студентам 8 25.06.2009 04:33
Сравнение значений в ячейках и вывод соообщения если не равно. Siver Microsoft Office Excel 2 18.12.2008 04:42
Сравнение строк Elm0 Паскаль, Turbo Pascal, PascalABC.NET 2 02.06.2008 09:31
Сравнение строк HOMER Общие вопросы Delphi 7 04.01.2008 05:53