Merhaba...

Listeden silme yapılacak durumlarda liste eleman sayısı olumsuz yönde değişecektir. Buna göre şunu hesaplayın.

10 elemanlı bir listemiz olsun. For döngüsü 0..10 dersek ne olur. Şartlar değişsin veya değişmesin 11 kere dönecektir.

Bu döngü esnasında 5 ve 6 numarlı elemanları sildiğimizi düşünelim. Ne olacak şimdi. Geriye kalacak olan 9 elemanlı bir listede, 11 elemanlıymış gibi döngü kurarak hata yapmış olduk.

Listeden eleman silineceği durumlarda; şarta/duruma göre döngü süresinin değişken olabildiği
While veya
Repeat kullanmalısınız...

Ek olarak mümkünse sondan başa doğur giderseniz, listedeki
aradan silme yapıldığında ekstra kontrollerle uğraşmak zorunda kalmazsınız. Çünkü eleman sayısı kadar eleman sıra numarası da önemli olabilir.
Kod: Tümünü seç
var
i:integer;
begin
i := toolbar1.ButtonCount-1;
Repeat
if toolbar1.Buttons[i].Caption = Edit1.Text then toolbar1.Buttons[i].Free;
Dec(i);
Until i < 0;

Çalışmalarınızda başarılar...