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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.03.2021, 07:52   #1
cutter47
Пользователь
 
Регистрация: 22.06.2020
Сообщений: 23
По умолчанию Вопрос по ListView

Приветствую всех, столкнулся с такой проблемой, имея ListView такого плана
https://prnt.sc/10ns43k
То есть если строка в столбце Wallet и строка в столбце Hash с теми же значениями встречается далее, то строки с этими же значениями нужно удалить.
не могу понять как можно удалить эти строки, оставив лишь одну из них.
Прошу вашей помощи, уже всю голову сломал.
Может кто-то уже сталкивался с похожей проблемой.
Буду очень признателен за помощь.
cutter47 вне форума Ответить с цитированием
Старый 17.03.2021, 21:38   #2
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
По умолчанию

Ответ
Код:
procedure TForm14.Button1Click(Sender: TObject);
var
  i, i2: Integer;
  str: String;
begin
  i := 0;
  while i < ListView1.Items.Count do
  begin
    str := ListView1.Items[i].SubItems.Strings[2];
    inc(i);
    for i2 := ListView1.Items.Count - 1 downto i do
    begin
      if str = ListView1.Items[i2].SubItems.Strings[2] then ListView1.Items[i2].Delete;
    end;
  end;
end;
Shouldercannon вне форума Ответить с цитированием
Старый 18.03.2021, 00:40   #3
cutter47
Пользователь
 
Регистрация: 22.06.2020
Сообщений: 23
По умолчанию

Спасибо за помошь большое, но этот код удаляет лишнее =(
Он сравнивает только по
ListView1.Items[i2].SubItems.Strings[2]
а нужно чтоб совпадало еще и с ListView1.Items[i2].SubItems.Strings[1]
cutter47 вне форума Ответить с цитированием
Старый 18.03.2021, 00:47   #4
cutter47
Пользователь
 
Регистрация: 22.06.2020
Сообщений: 23
По умолчанию

Огромное спасибо за неоценимую помощь, дальше сам чуток переписал, чтоб с первым столбом тоже сравнивало

Код:
procedure TForm1.Button11Click(Sender: TObject);
var
  i, i2: Integer;
  str,str2: String;
begin
  i := 0;
  while i < ListView2.Items.Count do
  begin
    str := ListView2.Items[i].SubItems.Strings[1];
    str2:= ListView2.Items[i].SubItems.Strings[4];
    inc(i);
    for i2 := ListView2.Items.Count - 1 downto i do
    begin
      if ((str = ListView2.Items[i2].SubItems.Strings[1]) and (str2 = ListView2.Items[i2].SubItems.Strings[4])) then ListView2.Items[i2].Delete;
    end;
  end;
end;
cutter47 вне форума Ответить с цитированием
Старый 18.03.2021, 09:07   #5
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
Код:
for i2 := ListView2.Items.Count - 1 downto i
проверит в том числе и саму исходную(поверяемую на совпадение)
Цитата:
Код:
    str := ListView2.Items[i].SubItems.Strings[1];
    str2:= ListView2.Items[i].SubItems.Strings[4];
и конечно сочтет ее равной
и при i2=i
Цитата:
Код:
then ListView2.Items[i2].Delete;
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 18.03.2021, 17:31   #6
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,289
По умолчанию

evg_m, поэтому перед циклом inc.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 19.03.2021, 01:00   #7
cutter47
Пользователь
 
Регистрация: 22.06.2020
Сообщений: 23
По умолчанию

спасибо, в коде учту.
cutter47 вне форума Ответить с цитированием
Старый 19.03.2021, 01:08   #8
cutter47
Пользователь
 
Регистрация: 22.06.2020
Сообщений: 23
По умолчанию

Цитата:
Сообщение от evg_m Посмотреть сообщение
проверит в том числе и саму исходную(поверяемую на совпадение)

и конечно сочтет ее равной
и при i2=i
Вы хотите сказать что она удалит и исходную строку, или как вас понять. ?
cutter47 вне форума Ответить с цитированием
Старый 19.03.2021, 09:22   #9
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
Вы хотите сказать что она удалит и исходную строку, или как вас понять. ?
в данном случае нет.
поскольку
Цитата:
evg_m, поэтому перед циклом inc.
и мы нашу строку исключили таким образом из проверки на удаление.
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 19.03.2021 в 09:24.
evg_m вне форума Ответить с цитированием
Старый 22.03.2021, 15:54   #10
cutter47
Пользователь
 
Регистрация: 22.06.2020
Сообщений: 23
По умолчанию

Ясно, спасибо за разъяснение.
cutter47 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопрос по ListView denis76560 Общие вопросы Delphi 9 05.04.2016 22:07
Вопрос по ListView denis76560 Общие вопросы Delphi 2 13.02.2016 16:59
вопрос по listview denis76560 Общие вопросы Delphi 5 05.02.2016 00:10
Вопрос по ListView flemeng Работа с сетью в Delphi 1 01.02.2010 00:35