Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Я заглючила основательно [D5, Win95/98]


Страницы:   1 2

Galy ©   (2002-02-15 11:21:00) 

Не могу вспомнить, что я пишу неправильно.

for i:=0 to listbox1.items.count-1 do begin
if strtoint(listbox1.items[i])=0 then
listbox1.Items.delete;
end;

Надо удалить запись из listbox"а, при условии равенства двух сторон.


QD   (2002-02-15 12:46:00) [21]

Var sl: TStringList;
i: integer;
begin
Try
sl:=TStringList.Create ;
for i:=0 to listbox1.items.count - 1 do
if strtoint(listbox1.items[i])<>0 then sl.Add(listbox1.items[i]);
ListBox1.Items:=sl;
finally
sl.Free;
end;
end;

А так работает, и неплохо :)


McSimm   (2002-02-15 12:19:00) [22]

>переделать этот цикл как Repeat ... Until
не обязательно
>относился очень плохо к смене границ и переменной цикла "для
Это вообще не возможно :) Измененить переменную не даст компилятор, изменение Count никак не влияет на количество проходов цикла


Nemesis   (2002-02-15 12:11:00) [23]

Сначала попробуй переделать этот цикл как Repeat ... Until

Еще ТР относился очень плохо к смене границ и переменной цикла "для


McSimm   (2002-02-15 12:02:00) [24]

Извиняюсь. Перепутал с другим объектом.
listbox1.Items.delete(i);


Galy   (2002-02-15 11:57:00) [25]

McSimm >пробовала и так, но вон что получается
Выдается следующая ошибка:
RECORD, OBJECT OR CLASS TYPE REQUIRED


McSimm   (2002-02-15 11:53:00) [26]

>Galy (15.02.02 11:44)
См. McSimm © (15.02.02 11:33)


Galy   (2002-02-15 11:44:00) [27]

Listbox1.Items.delete;
D5 вякает на данную строчку и выдает следующее сообщение об ошибке:
NOT ENOUGH ACTUAL PARAMETERS


wicked   (2002-02-15 11:38:00) [28]

упс... не заметил глюка... :)
2 McSimm © ;)


wicked   (2002-02-15 11:37:00) [29]

неправильного здесь то, что при выполнении операции удаления у тебя уменьшается listbox1.items.count... надо бы перебирать элементы listbox"а "сверху вниз" и завести отдельную переменную для количества элементов в listbox"е... например, во так:
var n: integer;
...
n := listbox1.items.count - 1;
for i := n downto 0 do begin
if strtoint(listbox1.items[i])=0 then listbox1.Items.delete;
end;
...

не проверял, но думаю, что должно работать..


McSimm   (2002-02-15 11:33:00) [30]

listbox1.Items [i] .delete;


McSimm   (2002-02-15 11:32:00) [31]

Организовывая цикл для удаления из списка лучше организовывать его в обратном порядке. Тогда не будет проблем с неверными индексами:

for i:=listbox1.items.count-1 downto 0 do begin


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо