Вниз
Скачать: CL | DM;

сравнение TStringList и первого столбца ListView   Найти похожие ветки 

 
Karl   (2007-06-10 09:13) [0]

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


 
Loginov Dmitry ©   (2007-06-10 09:17) [1]

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


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

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 нифига не проще!


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

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


 
Strate ©   (2007-06-10 16:02) [4]

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

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


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

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

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

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


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

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


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

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


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


 
Loginov Dmitry ©   (2007-06-10 19:39) [8]

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


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

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


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

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


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


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

> 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.


 
Loginov Dmitry ©   (2007-06-10 22:52) [11]

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


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



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.48 MB
Время: 0.013 c
15-1180762199
Катюха
2007-06-02 09:29
2007.07.01
Помогите пожалуйста...


2-1180988044
Koha
2007-06-05 00:14
2007.07.01
помогите конвертировать время


11-1164289862
Psychedelic
2006-11-23 16:51
2007.07.01
Unit mirror was compiled with a different version of KOL.TOnChar


1-1178178322
Layner
2007-05-03 11:45
2007.07.01
Мышка над TImage, определить координаты над TImage


15-1180690685
Ламот
2007-06-01 13:38
2007.07.01
Охлождение для сервера (упсов/свитчей/etc)




   Наверх