Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
1-46323
dymka
2002-04-03 08:06
2002.04.15
Нужен совет по проектированию компонент


3-46242
ava
2002-03-25 00:03
2002.04.15
SQL вопрос


1-46432
Иван
2002-04-02 21:51
2002.04.15
отправка email


1-46396
ded_di
2002-04-02 13:05
2002.04.15
печать rtf


1-46329
dimonf
2002-04-03 18:41
2002.04.15
Народ, помогите разобраться с QRPreview.





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский