![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
сравнение 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