Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.07.01;
Скачать: 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 вся ветка

Текущий архив: 2007.07.01;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.022 c
1-1178106337
DelphiLexx
2007-05-02 15:45
2007.07.01
Передать процедуру класса в Обычную функцию


15-1180730508
Иксик
2007-06-02 00:41
2007.07.01
Куда пойти в Риге, если в запасе всего 4-6 часов?


2-1181030795
авыф
2007-06-05 12:06
2007.07.01
потоки


2-1181153421
framez
2007-06-06 22:10
2007.07.01
процессы


15-1180612744
Шакал
2007-05-31 15:59
2007.07.01
Поиск максимального значения +1