List Index Out Of Bounds(70) Hataları Halen ÇÖZÜM YOOK!
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
- hedefbusiness
- Üye
- Mesajlar: 32
- Kayıt: 11 Nis 2006 11:59
- İletişim:
List Index Out Of Bounds(70) Hataları Halen ÇÖZÜM YOOK!
List Index Out Of Bounds(70) Hatasının Gercek Sebebi??
HTS 2 Windows Ticari Sistem Ürünümüzün
Stok Kartlarının Listeleme Ekranı Query ile Kullanıcının Karsısına Geliyor.
Burda query kullanmamızın sebebi bu ekranda Kullanıcının Kendi istegiyle belirledigi Aktif ve aktif olmayan Kartların Istenilen lerinin ekrana Listelenebilmesi..
Sorumuza Gelince Bazı Son kullanıcılarımızda Gerek Stok Kartları Ekranı Listelenirken
GErekse FAtura ekranından Hareketler icin Stok Kartları Ekranı cagrılıgıp stok kartı secildikten sonra
List Index Out Of Bounds(70)
Hatası ekrana geliyor!
Simdi Soyle bir durum Tüm Delphiturkiye arastırmalarımızda bu hatanın tablonun 70.elemanının olmamasından dolayı cagrılamadıgından bahsediliyor.
1.si bu nedemek Alan (field) olarakmı 70.eleman bulunamıyor?
2.si boyle bidurum olamaz 70 alanlık stok tanım querysi veya tablosu yok
3.sü 70 aland degilde 70 kayıttan mı bahsediliyor 70.kaydın bilgisimi okunamıyor anlamına geliyor?
4.sü Yoksa Table in indexi ile ilgili bi hatamı ancak biz zaten bu ekranlarda query ile alanları alıyoruz bundan neden kaynaklansın?
5.si List index Hatalarının Kullanıcıya gelmesini saglamak icin bu formların on show ve on close olaylarını TRY except kodları arasına almamıza ragmen Hata mesajlarını kesebilmek ve kullanıcıya gostertmemek icin KESİN BİR ÇÖZÜM Ne olabilir?
HERKESE IYI CALISMALAR
hedefbusiness@hotmail.com
http://www.hedefyazilim.net[/size]
HTS 2 Windows Ticari Sistem Ürünümüzün
Stok Kartlarının Listeleme Ekranı Query ile Kullanıcının Karsısına Geliyor.
Burda query kullanmamızın sebebi bu ekranda Kullanıcının Kendi istegiyle belirledigi Aktif ve aktif olmayan Kartların Istenilen lerinin ekrana Listelenebilmesi..
Sorumuza Gelince Bazı Son kullanıcılarımızda Gerek Stok Kartları Ekranı Listelenirken
GErekse FAtura ekranından Hareketler icin Stok Kartları Ekranı cagrılıgıp stok kartı secildikten sonra
List Index Out Of Bounds(70)
Hatası ekrana geliyor!
Simdi Soyle bir durum Tüm Delphiturkiye arastırmalarımızda bu hatanın tablonun 70.elemanının olmamasından dolayı cagrılamadıgından bahsediliyor.
1.si bu nedemek Alan (field) olarakmı 70.eleman bulunamıyor?
2.si boyle bidurum olamaz 70 alanlık stok tanım querysi veya tablosu yok
3.sü 70 aland degilde 70 kayıttan mı bahsediliyor 70.kaydın bilgisimi okunamıyor anlamına geliyor?
4.sü Yoksa Table in indexi ile ilgili bi hatamı ancak biz zaten bu ekranlarda query ile alanları alıyoruz bundan neden kaynaklansın?
5.si List index Hatalarının Kullanıcıya gelmesini saglamak icin bu formların on show ve on close olaylarını TRY except kodları arasına almamıza ragmen Hata mesajlarını kesebilmek ve kullanıcıya gostertmemek icin KESİN BİR ÇÖZÜM Ne olabilir?
HERKESE IYI CALISMALAR
hedefbusiness@hotmail.com
http://www.hedefyazilim.net[/size]
En son hedefbusiness tarafından 13 Tem 2006 06:24 tarihinde düzenlendi, toplamda 2 kere düzenlendi.
bende aynıı katayıı aldım vee halledemedimm sonunda mantıgıı değiştirmek zorunda kaldım.. Bu hata herzaman gercekleşmiyordu aynıı işlemii bir kac kezz yapınca gercekleiyordu.. nBaktımkii her seferinde rem atılan bir şeyler var ve serbest bırakamıyordum.. En sonundaa hepsinii tekarardan baska birr şekilde yapmak zorunda kaldım
Başlayan Herşey Birgün Bitmek Zorundadır.
Programınızda TList, TStrings, TStringList yada bunlar gibi Liste tutan bir nesne var (muhtemelen çok sayıda kullanmışsınızdır) ve bu nesnenin 70 nci elamanına erişilmeye çalışılıyor, Fakat 70 nci eleman yok.
Bu belki kullandığınız 3 . parti bir bileşenin kodunda da yer alıyor olabilir.
Bunun nedeni pek çok şey yolabilir.
Kod bloğunu Try ... except içine almak gerçek bir çözüm değil.
uzun bir trace macerası sizi bekliyor olabilir.
Kolay gelsin.
Bu belki kullandığınız 3 . parti bir bileşenin kodunda da yer alıyor olabilir.
Bunun nedeni pek çok şey yolabilir.
Kod bloğunu Try ... except içine almak gerçek bir çözüm değil.
uzun bir trace macerası sizi bekliyor olabilir.
Kolay gelsin.
s.a.
öncelikle yapmanız gereken şey hatanın kaynağını bulmak.
sebebi belli 70.eleman yok....
kaynağını bulmak için
programın bir log dosyası tutmasını sağlayın.
ilgili hatayı veren işlemler dizisine başlamadan önce her satırdaki işlemden sonra log dasyasına şu satır çalıştı şeklinde satır ekleyin.
böylelikle bir kaç denemeden sonra hatanın meydana geldiği satırı bulabilirsiniz. (tabi log dosyasını müşterinizin bigisayarında yada hatayı veren herhangi bir makineden tutmanız lazım.) hataya sebep olan satırı bulduktan sonra geriye düzeltme kalıyor.
kolay gelsin.
öncelikle yapmanız gereken şey hatanın kaynağını bulmak.
sebebi belli 70.eleman yok....
kaynağını bulmak için
programın bir log dosyası tutmasını sağlayın.
ilgili hatayı veren işlemler dizisine başlamadan önce her satırdaki işlemden sonra log dasyasına şu satır çalıştı şeklinde satır ekleyin.
böylelikle bir kaç denemeden sonra hatanın meydana geldiği satırı bulabilirsiniz. (tabi log dosyasını müşterinizin bigisayarında yada hatayı veren herhangi bir makineden tutmanız lazım.) hataya sebep olan satırı bulduktan sonra geriye düzeltme kalıyor.
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
- Murat DİCLE
- Kıdemli Üye
- Mesajlar: 702
- Kayıt: 19 Nis 2006 04:12
- Konum: İstanbul
- İletişim:
Merhabalar,
Programlar devasa boyutlara ulaştığında, F9 ile çalıştırıp DEBUG etmekte zorlaşabilmektedir, hele hele cxGrid vb. şeyleride kullanıyorsanız ki resmen DEBUG işlemi bıktırıyor insanı.
Ben genelde şunu kullanırım:
Öncelikle şüphelendiğim fonksiyonun içine girip, BEGIN'in altında LOG('falanca fonksiyon başladı'); yazar ve o fonksiyonun END'inden önce ise LOG('falanca fonksiyon bitti'); derim.
Tabi bunu mümkünse diğer fonksiyonlarada koyarım. Progrmı yazan kişi zaten bunu nerelere koyacağını bilir. Hatta {$IF} olayı ile DEBUG derlemesi ile yapabilirsiniz ki en doğrusu bu olacaktır. Böylelikle bir hata aramasında programı neredeyse adım adım incelersiniz.
Ayrıca fonksiyon içindede adım numaraları eklerim.
örnek:
gibi birşey ile adımları numaralandırırım. Böylelikle fonksiyon başlayıp bitmişmi yoksa fonksiyonun neresinde hata vermiş tahmin edilebilir. Tabi verdiğim örnek basit kaçıyor. Uygulamalarınızda, fonksiyon içinde başka fonksiyonlar çağırılmış olabilir. O zaöman o fonksiyonlarada aynı yöntemi uygulayınız.
Şimdi sizin bahsettiğiniz hatada hep 70 rakamı beliyorsa, ve sizde 70. kayıtta yada 71. dizi elemanında böyle bir hatanın bir çok müşteride aynı anda olma ihtimaline inanmıyorsanız, demekki başka bir yerlerde hata vardır. Anladığım kadarıyla, TRY EXCEPT bloğuda kullanmanıza rağmen, hata meydana da gelmektedir. Bu durumda şüphelendiğiniz bölümün dışında bir hata meydana gelmektedir. Muhtemelen, bir komponent içinde yada bir DLL çağrısında olabilir bu.
Eğer siz bu bahsi geçen hatayı yakalayabiliyorsanız şanslısınız, ama bu hata genelde hep müşterilerinizin başına geliyorsa o zaman durum kötü. Çünkü en azından siz bu hatanın devamlı tekrarlanabilr bir durumun olduğunu farkettiğinizde müdahale etmek kolay olacaktır. Ancak müşterinin ifadesiyle böyle bir hatanın giderilmesi zor olacaktır, ki sizde buu yaşıyorsunuz şuan.
Ne yapabilirsiniz, Öncelikle bu hata ile karşılaşan müşterileri sorguya çekin, saçma gibi bile gelse sorular sorun, bilgisayarın özellikleri hangi işletim sistemi, bir virüs ya da benzeri bir prog. kullanıyor mu? vs. vs.
Sonra müşterinin bu hatayı almadan önceki adımlarını öğrenmeye başlayın. Belki müşteri stok kart listesi alırken böyle bir hata olmuştur ama öncesinde, başka yaptığı bir işlemde meydana gelen bir hatanın yansısıda olabilir.
CPU dökümü hatayı tespit etmek için uygun olacaktır, yine bu sitede verdiğim JEDİ nin bir hata yakalama sistemi var,oda faydalı olacaktır ki ben çok faydasını gördüm. Ayrıca daha derli toplu bir hata yakalama sistemi olan madExcept adlı sistemde güzeldir. Ve size oldukça detaylı bir rapor gönderecektir.
Bunların dışında, bahsi geçen hataların meydana geldiği kod bloğunu burda gösterirseniz belki daha fazla yardım alabilirsiniz.
Saygılar...
Programlar devasa boyutlara ulaştığında, F9 ile çalıştırıp DEBUG etmekte zorlaşabilmektedir, hele hele cxGrid vb. şeyleride kullanıyorsanız ki resmen DEBUG işlemi bıktırıyor insanı.
Ben genelde şunu kullanırım:
Öncelikle şüphelendiğim fonksiyonun içine girip, BEGIN'in altında LOG('falanca fonksiyon başladı'); yazar ve o fonksiyonun END'inden önce ise LOG('falanca fonksiyon bitti'); derim.
Tabi bunu mümkünse diğer fonksiyonlarada koyarım. Progrmı yazan kişi zaten bunu nerelere koyacağını bilir. Hatta {$IF} olayı ile DEBUG derlemesi ile yapabilirsiniz ki en doğrusu bu olacaktır. Böylelikle bir hata aramasında programı neredeyse adım adım incelersiniz.
Ayrıca fonksiyon içindede adım numaraları eklerim.
örnek:
Kod: Tümünü seç
procedure HataOlmasiMuhtemelSey(x, y : integer);
var n : integer;
begin
log('HataOlmasiMuhtemelSey BEGIN');
n := x div 2;
log('HataOlmasiMuhtemelSey #1');
y := x;
log('HataOlmasiMuhtemelSey #2');
x := (y * 2) / n;
log('HataOlmasiMuhtemelSey END');
end;
Şimdi sizin bahsettiğiniz hatada hep 70 rakamı beliyorsa, ve sizde 70. kayıtta yada 71. dizi elemanında böyle bir hatanın bir çok müşteride aynı anda olma ihtimaline inanmıyorsanız, demekki başka bir yerlerde hata vardır. Anladığım kadarıyla, TRY EXCEPT bloğuda kullanmanıza rağmen, hata meydana da gelmektedir. Bu durumda şüphelendiğiniz bölümün dışında bir hata meydana gelmektedir. Muhtemelen, bir komponent içinde yada bir DLL çağrısında olabilir bu.
Eğer siz bu bahsi geçen hatayı yakalayabiliyorsanız şanslısınız, ama bu hata genelde hep müşterilerinizin başına geliyorsa o zaman durum kötü. Çünkü en azından siz bu hatanın devamlı tekrarlanabilr bir durumun olduğunu farkettiğinizde müdahale etmek kolay olacaktır. Ancak müşterinin ifadesiyle böyle bir hatanın giderilmesi zor olacaktır, ki sizde buu yaşıyorsunuz şuan.
Ne yapabilirsiniz, Öncelikle bu hata ile karşılaşan müşterileri sorguya çekin, saçma gibi bile gelse sorular sorun, bilgisayarın özellikleri hangi işletim sistemi, bir virüs ya da benzeri bir prog. kullanıyor mu? vs. vs.
Sonra müşterinin bu hatayı almadan önceki adımlarını öğrenmeye başlayın. Belki müşteri stok kart listesi alırken böyle bir hata olmuştur ama öncesinde, başka yaptığı bir işlemde meydana gelen bir hatanın yansısıda olabilir.
CPU dökümü hatayı tespit etmek için uygun olacaktır, yine bu sitede verdiğim JEDİ nin bir hata yakalama sistemi var,oda faydalı olacaktır ki ben çok faydasını gördüm. Ayrıca daha derli toplu bir hata yakalama sistemi olan madExcept adlı sistemde güzeldir. Ve size oldukça detaylı bir rapor gönderecektir.
Bunların dışında, bahsi geçen hataların meydana geldiği kod bloğunu burda gösterirseniz belki daha fazla yardım alabilirsiniz.
Saygılar...
Merhaba,
Sorununuzun üzerinde epey zaman geçmiş ama bu mesajları okuyanlar için devam etmek istedim.
Bir listboxta 5 tane veri var diyelim. Hakan Can arkadaşımızın da dediği gibi , bunların sayısına
ile ulaşacağınızı Listedeki son elemana
ile ulaşabileceğinizi gözönünde bulunduruyor musunuz?
Ayrıca sizin programını demosunu indirsek o problem orda mevcut mu şuan?
Kolay gelsin.
Sorununuzun üzerinde epey zaman geçmiş ama bu mesajları okuyanlar için devam etmek istedim.
Bir listboxta 5 tane veri var diyelim. Hakan Can arkadaşımızın da dediği gibi , bunların sayısına
Kod: Tümünü seç
listbox1.items.count
Kod: Tümünü seç
listbox1.items[listbox1.items.count-1]
Ayrıca sizin programını demosunu indirsek o problem orda mevcut mu şuan?
Kolay gelsin.
http://www.aysbergbilgisayar.com
Logo Go özel eğitim, web tasarım, teknik servis
Logo Go özel eğitim, web tasarım, teknik servis