Форум: "Начинающим";
Текущий архив: 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