Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

сравнение TStringList и первого столбца ListView [D7]


Karl ©   (2007-06-10 09:13:00) 

Подскажите, пожалуйста: как можно по проще организовать сравнение TStringList и первого столбца ListView? Т.е. удалить все строки в ListView, которых нет в TStringList, и, соответственно, из TStringList добавить в ListView недостающие. НО порядок ListView чтобы оставался старый


Loginov Dmitry   (2007-06-10 22:52:00) [1]

> ...с дибильными
> советами:
>> Проще - через цикл for


Это не "дибильный" совет, а абсолютно правильный и единственный в твоем случае. Скомбинируй цикл for и метод TStringList.IndexOf(). Из [2] я сделал вывод, что с циклом for ты уже познакомился, поэтому решил, что сделать рабочий код у тебя не составит особого труда. А код - простейший. На вскидку 10 строк максимум. Неужели неосилишь?


Loginov Dmitry   (2007-06-10 22:47:00) [2]

> function IndexOf(Value: TListItem): Integer;


не тот IndexOf. Нужно смотреть для TStringList:

Returns the position of a string in the list.

Delphi syntax:

function IndexOf(const S: string): Integer; override;

C++ syntax:

virtual int __fastcall IndexOf(const AnsiString S);

Description

Call IndexOf to obtain the position of the first occurrence of a string that matches S. A string matches S if it is identical to S or, if CaseSensitive is false, if it differs only in case.

IndexOf returns the 0-based index of the string. Thus, if S matches the first string in the list, IndexOf returns 0, if S is the second string, IndexOf returns 1, and so on. If the string does not have a match in the string list, IndexOf returns -1.


Karl   (2007-06-10 20:09:00) [3]

Дельфей идет хелп, где все это описано
Вот что есть в справке:
Delphi syntax:
function IndexOf(Value: TListItem): Integer;


Если Дельфя есть, то какие проблемы взять да посмотреть
- такие ответы - отмазка безграмотных!
Прочитал пару статей! и уже в мастера лезет с дибильными советами:
Проще - через цикл for


Loginov Dmitry   (2007-06-10 19:39:00) [4]

> если использовать IndexOf!- Слышал что-нибудь про это?


Офигеть!
Ты че, на листке программишь чтоль?

Если Дельфя есть, то какие проблемы взять да посмотреть, что из себя представляет IndexOf? Если и это не поможет, то с Дельфей идет хелп, где все это описано.


Karl   (2007-06-10 16:53:00) [5]

Loginov Dmitry ©   (10.06.07 16:46) [6]
с циклом не осилишь


Вот мне подсказали, что цикл раза в два будет поменьше, если использовать IndexOf!- Слышал что-нибудь про это? Вот тут, действительно, если кто знает примерчик - скажу ОГРОМНОЕ спасибо за подсказку!


Loginov Dmitry   (2007-06-10 16:46:00) [6]

Ты че, сам с циклом не осилишь? Код выклянчиваешь? Если нет - то давно бы уж сделал.


Karl   (2007-06-10 16:10:00) [7]

Удаление всей строки?- Да!

Можно просто сначала удалить те, которых нет, а в конец ListView поставить недостающие.
Именно! Вы всё правильно поняли, Strate!

Но кроме как цикл в цикле с циклом ничего на ум не приходит. Как этот вопрос решить (программно) покомпактнее?


Strate   (2007-06-10 16:02:00) [8]

А что понимается под удалением элемента из столбца? Удаление всей строки? И что значит "чтобы порядок оставался старым"? Можно просто сначала удалить те, которых нет, а в конец ListView поставить недостающие.

З.Ы. Каждая колонка ListView - это не отдельный StringList


Karl   (2007-06-10 15:49:00) [9]

Уважаемые Мастера!
Неужели нет какой-нибудь функции сравнения, чтобы не городить?
Можно было бы использовать Clear, но порядок в ListView, как Вы понимаете, будет нарушен!


Karl   (2007-06-10 09:22:00) [10]

For - это на целый лист:
for I := 0 to StringList.Count - 1 do
begin
...
for e := 0 to ListView.Items.Count-1 do
  begin
...
for t := 0 to StringList.Count - 1 do
   begin
...

сначала сравниваем TStringList с ListView - добавляем недостающие,
потом ListView с TStringList - удаляем отсутствующие

For нифига не проще!


Loginov Dmitry   (2007-06-10 09:17:00) [11]

Проще - через цикл for


Наверх

Титульная страница Поиск, карта сайта Написать письмо