List index out of bounds Hatası

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
aponcanos

List index out of bounds Hatası

Mesaj gönderen aponcanos »

formun showuna aşağıdaki kodu yazdım.Amaç form açılırken comboboxın itemsini table'nin herhangi alanında çekmesi.komutu yazıyorum.


DBComboBox1.Items.Add(table8.Fields.Fields[1].AsString);
DBComboBox2.Items.Add(table8.Fields.Fields[2].AsString);
DBComboBox3.Items.Add(table8.Fields.Fields[3].AsString);
DBComboBox4.Items.Add(table8.Fields.Fields[4].AsString);
DBComboBox5.Items.Add(table8.Fields.Fields[5].AsString);
DBComboBox8.Items.Add(table8.Fields.Fields[8].AsString);
DBComboBox9.Items.Add(table8.Fields.Fields[9].AsString);


HATA MESAJI İSE ŞÖYLE

""""Project Project1.exe raised exception class EListError with message "List index out of bounds(4)".Process stopped.uSE sTEP OR rUN TO Continue."""""

YARDIMLARINIZ İÇİN ŞİMDİDEN TEŞEKKÜRLER...İYİ ÇALIŞMALAR
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7603
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek »

Sanırım Table8'de sadece 4 alan var, bunun için o hatayı alıyorsun. Fields[4]'e ulaşamıyorum diyor.

Yazdığın kod pek alışılmış değil. Ne yapmak istediğini yazarsan, daha detaylı cevap yazılabilir.

Yapmak istediğin şu olabilir mi : http://www.delphiturkiye.com/index.php? ... astan_sona

Kolay gelsin.
aponcanos

Combobox'ları doldurmak...

Mesaj gönderen aponcanos »

form1 de toplam 15 , 20 adet combobox var. ve ben bunların itemslerini bi table da tutuyorum ki kullanıcı bunları güncelleyebilsin diye . fakat gönderdiğim hatayı veriyo. HAYIRLI ÇALIŞMALAR
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7603
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek »

15 comboBox olabilir ama bunların verisini tek bir alanda saklayabilirsiniz. Table8'in gösterdiği tabloda kaç alan (field) var. ComboBox'ların içeriğini nasıl saklıyor sunuz?

Kolay gelsin.
aponcanos

Table'da 15 field war.

Mesaj gönderen aponcanos »

Table'da 15 field war.
örneğin...

Boya Wc Alcipan
Saten Aynı Var
Plastik Ayrı Yok

Gibi 15 adet alan var. Herbiri bir combobox'a tekabül ediyor.Mustafa abi takıldım kaldım ve hiç bişey anlamadım.hatayı bulamıyorum.Kodlarımda sorun yok gibi ama bu 15 comboboxın table dan items leri çekmesi için gerek o kodları yazdığımda o malum hatayı veriyo.Yardımların için şimdiden teşekkürler.HAYIRLI ÇALIŞMALAR
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7603
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek »

O zaman hata vermemesi lazım. Adım adım çalıştırırsan, tam nerde hata verdiğini bulursan problemi daha kolay çözersin.

Kolay gelsin.
Kullanıcı avatarı
warder
Üye
Mesajlar: 255
Kayıt: 10 Mar 2004 04:59

Mesaj gönderen warder »

try cath bloğu ile hatanın çalışma zamanı mesaj olarak alınmasının faydası olabilir. Daha net olarak görürsünüz.
Ancak yazdığınız koddan değilde başka bir bölümden kaynaklanıyor gibi.
Sonuçta bir taşmadan şikayet var.
Rakamsal atama yapmamışsınız ama öyle bir durum varsa ilk items in 0 dan başladığını akılda tutarak, döngüsel atamalarda items.count - 1 gibi tedbirlerle out of bounds hatasının önüne geçilmesi gerekir.

table8.Fields.Fields[1].AsString);
gibi bir tanımlama yerine
table8ALAN_ADI.Value gibi daha okunaklı kodlamalarda hata takibi daha kolay yapılabilir.
... Muhtaç olduğun kudret, damarlarındaki asil kanda mevcuttur!
Mustafa Kemal Atatürk...
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

Merhabalar...

@aponcanos; @Admin haklı, Table8'in bağlı olduğu fiziksel veritabanında 15 adet alan olabilir ama, delphi içinde stratejini belirtirken table üzerine çift tıklayınca da görebileceğin, bunlardan sadece 4'ünü seçmişsin görünüyor...

- Büyük bir ihtimalle DBGridde görünecek alan sayısını kısıtlamak için yaptığını varsayarak, DesignTime'da Table'ı Active edip , çift tıklayınca çıkan listeye Add All Fields demelisin. Sonra da Table'ı DeActive etmeyi unutma...

- Yukarda belirttiğim ihtimal sözkonusu ise bırak DBGride'de hepsi görünür olsun, DBGrid'in columns özelliğinde Visible parametresini false yaparak görünmez kılabilirsin veya yine DBGrid üzerine çift tıklayıp sadece görünmesini istediğin alanları ekleyebilirsin.... En son olarak da SQL kullanıp DBGrid'e yansıtır, asıl veritabanı ile koordineli bir çalışma yürütürsün...

- Umarım kafa karıştırıcı bir cevap olmamıştır...

- Başarılar...
Resim
Resim ....Resim
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7603
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek »

warder yazdı:table8.Fields.Fields[1].AsString);
gibi bir tanımlama yerine
table8ALAN_ADI.Value gibi daha okunaklı kodlamalarda hata takibi daha kolay yapılabilir.
böyle alındığı zaman değer string yerine variant olarak geliyor bu da bir takım sıkıntılara yol açabiliyor. Ben hep AsString, AsInteger tarzı kullanıyorum.

Kolay gelsin.
Cevapla