Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.07.01;
Скачать: [xml.tar.bz2];

Вниз

сравнение 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.004 c
1-1178253295
pohil
2007-05-04 08:34
2007.07.01
CDATA в XML


2-1181276047
KJ
2007-06-08 08:14
2007.07.01
Выделить строку ListView целиком


2-1181209731
МинЗдрав
2007-06-07 13:48
2007.07.01
Ошибка какая то...


3-1175600650
natasha13
2007-04-03 15:44
2007.07.01
Изменение данных в Query


2-1181491812
{RASkov}
2007-06-10 20:10
2007.07.01
Не полное сравнение данных





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский