List index out of bounds Hatası
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
List index out of bounds Hatası
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
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
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.
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.
Combobox'ları doldurmak...
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
Table'da 15 field war.
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
ö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
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.
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...
Mustafa Kemal Atatürk...
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...
@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...
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.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.
Kolay gelsin.