Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.04.15;
Скачать: CL | DM;

Вниз

помогите начинающему 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;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.013 c
7-46523
EskimOS
2002-01-21 10:38
2002.04.15
Работа с большим файлом...


3-46291
alexandervasjuk
2002-03-21 14:06
2002.04.15
MySQL. Что день грядущий мне готовит?


1-46437
LazyCat
2002-04-02 17:04
2002.04.15
Как сделать липкие формы?


1-46317
Сатир
2002-04-03 16:27
2002.04.15
Прячем мышку


1-46300
Martyn
2002-04-02 11:27
2002.04.15
Вопрос по печати Bitmap в Delphi