Форум: "Основная";
Текущий архив: 2002.04.15;
Скачать: [xml.tar.bz2];
Внизпомогите начинающему TComboBox.Items Найти похожие ветки
← →
michael_B (2002-04-03 19:40) [0]Как в TComboBox удалить Items, в которых содержится например слово "xxx".
например было:
TComboBox.Items=
"фыва",
"фыxxx",
"asfgh"
нужно
TComboBox.Items=
"фыва",
"asfgh"
← →
Andrus (2002-04-03 20:30) [1]for i:=0 to ComboBox1.ItemsCount
begin
if pos("xxx",ComboBox1.Items.Strings[i])>0 then
ComboBox1.Items.Delete(i);
end;
← →
Юрий Зотов (2002-04-03 21:22) [2]Так не годится - будет "List index out of bounds".
Надо гнать цикл в обратном порядке:
for i := ComboBox1.Items.Count - 1 to 0 do...
← →
Andrus (2002-04-03 21:35) [3]Да не будет никакого "List index out..."
И надо не to a downto :))
← →
Юрий Зотов (2002-04-03 21:39) [4]Насчет downto - согласен, невнимательно писал.
А насчет List index - попробуйте сами. На эти грабли уже многие наступали.
← →
Caligula (2002-04-03 21:42) [5]Я считаю лучше так:
ComboBox.Items[ComboBox.Items.IndexOf("XXX")]
Вот и всё.
← →
Andrus (2002-04-03 21:55) [6]А в каком случае эксепшен произойдет????
А на такие грабли я тоже наступал но все же мне кажется это не тот случай...
← →
DenKop (2002-04-03 23:32) [7]to Andrus
for i:=0 to ComboBox1.ItemsCount
begin
if pos("xxx",ComboBox1.Items.Strings[i])>0 then
ComboBox1.Items.Delete(i);
end;
В примере приведённом автором Count=3, т.е. на последнем шаге цикла будет выполняться следующее:
if pos("xxx",ComboBox1.Items.Strings[3])>0 then
ComboBox1.Items.Delete(3);
,а как известно нумерация итемса начинается с нуля, а в данном случае идёт обращение к четвёртому элементу, которого естественно нет по условию. Вот здесь выскочит Exception.
← →
Song (2002-04-03 23:37) [8]Да, я полностью согласен с Caligula © (03.04.02 21:42)
Самое простое:
With ComboBox.Items Do Delete[IndexOf("XXX")];
И поместить в исключение на случай, если записи такой не обнаружится.
← →
MBo (2002-04-04 08:03) [9]>Caligula & Song
внимательно вопрос прочитайте -
IndexOf("xxx)" не отловит "фыxxx",
и правильно делать так, как указал Ю.Зотов
with ComboBox1 do //Song-у на радость ;)
for i:=Items.Count-1 downto 0 do
if Pos("xxx",Items[i])>0 then
Items.Delete(i);
или так
i:=0;
with ComboBox1 do
while i < Items.Count do
if Pos("xxx",Items[i])>0 then Items.Delete(i)
else inc(i);
← →
Song (2002-04-04 08:33) [10]2MBo © (04.04.02 08:03)
Ok, понял. Вопроса, не прочитал, а включился в дискусиию.
Song-у на радость
Кстати здесь можно было With ComboBox1.Items Do... так не нужно писать везде Items :P
:)))
← →
amamed_3071 (2002-04-04 08:34) [11]i:=Combobox1.Items.IndexOf(S);
While i<>-1 Do
Begin
Combobox1.Items.Delete(i)
i:=Combobox1.Items.IndexOf(S);
end;
← →
MBo (2002-04-04 09:07) [12]>Song
я хотел, но увы - Items[i] ;((
← →
Song (2002-04-04 09:18) [13]MBo © (04.04.02 09:07) Эххх, чёрт :(((
Кстати, часто от этого страдаю. Придумали бы создатели дельфи какой-нибудь индекс для ссылки на сам объект, указынный в With (например, разновидность self...) With ComboBox1.Items Do ShowMsssage(Self[i].Text); например :))
Дак нет ведь, Self для другого припахали. :((
← →
DL (2002-04-04 09:36) [14]2michael_b
Попробуй:
for i:=0 to ComboBox1.Items. Count-1 do
begin
if pos("xxx",ComboBox1.Items[i])>0 then
ComboBox1.Items.Delete(i);
end;
← →
Zemal (2002-04-04 10:38) [15]Блин!!! Ну сколько можно разбирать примеры из учебника??? Ребята, лезьте в учебники и не задавайте элементарных вопросов!!! Не отнимайте время, плз!!! Решите сами эту задачу! Размышляйте и думайте!!! А получая готовые решения никогда не уясните основ языка!!! Экспериментируйте, блин! Иначе так и останетесь ламерами! Я сам старался решать такие мелкие проблемы и знаю, что поиск ответа на вотрос заставляет понять и уяснить для себя ответы на десятки побочных вопросов, что ускоряет обучение! Помните из философии "переход количественных изменений в качественные"?! Так вот, если в лом читать книгу по Дельфи (где можно найти кучу подобных примеров), то никогда не стать вам Программистами! Накапливайте опыт, пока не научитесь с лёгкостью мыслить категориями Делфи! Иначе не получится из вас ничего! :) Вот-с...
← →
KSergey (2002-04-04 13:56) [16]И после всех разжевываний DL дает неверный ответ... О, люди!
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.04.15;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.004 c