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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.11.2015, 14:36   #1
bilibian
Форумчанин
 
Регистрация: 21.01.2014
Сообщений: 389
По умолчанию Как удалить элемент списка по его имени?

Привет!

Код:
procedure TForm1.btn1Click(Sender: TObject);
  var
    List : TStringList;
    I : Integer;
begin
  List := TStringList.Create;
  List.Clear;
  List.Add('abc=123');
  List.Add('ddd=456');

  for I := List.Count-1 downto 0 do
    if List.Names[I] = 'abc' then List.Delete(I);

  List.Free;
end;
Можно ли удалить элемент списка по его имени, а не по id? В данном случае имя это "abc".


Поясню, для чего мне это нужно:

Список может быть очень большим, и считаю, что не стоит каждый раз крутить его в цикле, чтобы удалить один элемент по его id. Это может быть очень долго.

Возможно есть вариант, где вместо id можно указать имя.

Примерно так:

Код:
for I := 0 to List.Count-1 do
    if List.Names[I] = 'abc' then List.Delete('abc');
Поможете?

Последний раз редактировалось bilibian; 21.11.2015 в 15:01. Причина: fix
bilibian вне форума Ответить с цитированием
Старый 21.11.2015, 15:20   #2
tsar_
Форумчанин
 
Аватар для tsar_
 
Регистрация: 06.01.2011
Сообщений: 369
По умолчанию

Список сортированный?
Программирую по необходимости
tsar_ вне форума Ответить с цитированием
Старый 21.11.2015, 15:23   #3
bilibian
Форумчанин
 
Регистрация: 21.01.2014
Сообщений: 389
По умолчанию

Цитата:
Сообщение от tsar_ Посмотреть сообщение
Список сортированный?
Нет. Сортировка, в моем случае, особой роли не играет.
bilibian вне форума Ответить с цитированием
Старый 21.11.2015, 15:30   #4
tsar_
Форумчанин
 
Аватар для tsar_
 
Регистрация: 06.01.2011
Сообщений: 369
По умолчанию

Если правильно помню, у TStringList есть метод IndexOfName
Программирую по необходимости
tsar_ вне форума Ответить с цитированием
Старый 21.11.2015, 15:43   #5
bilibian
Форумчанин
 
Регистрация: 21.01.2014
Сообщений: 389
По умолчанию

Цитата:
Сообщение от tsar_ Посмотреть сообщение
Если правильно помню, у TStringList есть метод IndexOfName
То что нужно, спасибо!
bilibian вне форума Ответить с цитированием
Старый 21.11.2015, 15:53   #6
tsar_
Форумчанин
 
Аватар для tsar_
 
Регистрация: 06.01.2011
Сообщений: 369
По умолчанию

Нету под рукой компилятора, так что посмотрите реализацию IndexOfName в delphi, скорее всего он тоже тупо перебирает элементы списка и сравнивает Name.
Это я к тому, что проблему скорости поиска в несортированном списке этот метод не решит.
Программирую по необходимости
tsar_ вне форума Ответить с цитированием
Старый 21.11.2015, 15:59   #7
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Цитата:
То что нужно
А IndexOfName думаешь как ищет? Также тривиально - в цикле перебором
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 21.11.2015, 22:43   #8
SQLPowerUser
Форумчанин
 
Аватар для SQLPowerUser
 
Регистрация: 19.01.2015
Сообщений: 158
По умолчанию

В зависимости от ситуации, можно использовать дженерики.
Или вот это
SQLPowerUser вне форума Ответить с цитированием
Старый 21.11.2015, 23:29   #9
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

И StringList отсортировать будет искать не менее быстро
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 22.11.2015, 09:02   #10
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,964
По умолчанию

Если ключ уникален, можно применить конструкцию "ключ=значение". Немножко быстрее ищет чем простым сравнением фрагмента строки.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
С,С++, как удалить элемент списка? Алексей_2012 Помощь студентам 5 11.06.2015 10:38
удалить последний элемент из списка.ООП-Классы Otar4ik Помощь студентам 1 02.02.2014 22:36
Удалить элемент списка KatCH Общие вопросы по Java, Java SE, Kotlin 7 01.02.2013 16:13
Как создать элемент заранее определенного имени. dampirik Общие вопросы .NET 4 25.04.2010 18:05
помогите удалить элемент из связанного списка kermit Помощь студентам 5 13.06.2008 10:14