bu komutu işlemek için yeterli depolama alanı yok hatası

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
greenegitim
Üye
Mesajlar: 713
Kayıt: 28 Nis 2011 10:33
Konum: İstanbul

bu komutu işlemek için yeterli depolama alanı yok hatası

Mesaj gönderen greenegitim »

Resim
programda işlemler yaparken forma gir çık v.s arada bu tarz hatalar veriyor ve program kitleniyor programı sonladırıp yeniden açmam gerekiyor.
bu hata windowsxp lerde çok oluyor windows7 de de nadir de olsa çıkıyor. bazende bu hata ekrani çıkmadan kilitleniyor. yaptığım şey formu açmak.
Mücadele güzelleştirir!
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: bu komutu işlemek için yeterli depolama alanı yok hatası

Mesaj gönderen mrmarman »

Merhaba.

- Sorunuz çok kapalı. Bu şekilde bir sonuç alamazsınız. Mesajınızı tekrar kendiniz okuyun, sanki -ki ben böyle olmadığına kaniyim ama soru tarzınızı eleştirmek için yazıyorum- "boş bir proje oluşturdunuz, iki form koydunuz, ikinci formu kapatıp açıyorum. Bu işlemi bir kaç kez yapınca bu hatayı veriyor" gibi de algılanıyor demekten farkı yok.

(1) Oyum bundan yana ama sadece yorumluyorum, hatalı da olabilirim. DBComboBox35.Items.Clear deyip boşaltmadan her defasında veri girişi yapılıyor ve şişiyor olabilir.

(2) şu linkte memory leak sorunu ile ilgili Embarcadero forumdaki başlığı inceleyin. Burada da ard arda 16000 kere aynı box'a erişim yapıldığında stabilitesini kaybettiği yazıyor. Benzeri bir durumu yaşıyor da olabilirsiniz.

- Daha önce başka bir başlıkta da yazmıştım, şimdi sizde de yineleyim. Kod okuyarak takip edemiyorsanız, hata takibi ve tespiti için EVENT'lardan başlayın.

(1)Öncelikle OnCreate, OnShow, OnActivate gibi form açılır açılmaz tetiklenenlerden başlayan bir silsile ile begin bloğunun hemen altında

Kod: Tümünü seç

EXIT;
komutu yerleştirin. Böylece o event bypass edilmiş olacaktır.

(2) Sonra sırasıyla bu event'lere eklediğiniz EXIT komutlarını kaldırarak tekrar çalıştırın.

(3) Hata geldiği anda o evete odaklanıp bu defa yapılan işlemlerin başlarında // comment tagı koyup çalıştırıp sırayla kaldırın.

- Bize sorarken şurada şu işlem yapılıyor deyip kod örneği koymazsanız hata mesajına bakıp kesin şundan bu hatayı veriyor demek imkanı yoktur. Buradaki hata Access Violation bile olsa, size şu bileşen daha create edilmeden erişmeye çalışıyorsunuz diyemeyiz, sadece öznesini kendinizin bulması adına yere basmayan cevaplar vermek zorunda kalırız.
Resim
Resim ....Resim
Kullanıcı avatarı
greenegitim
Üye
Mesajlar: 713
Kayıt: 28 Nis 2011 10:33
Konum: İstanbul

Re: bu komutu işlemek için yeterli depolama alanı yok hatası

Mesaj gönderen greenegitim »

hocam güzel açıklamışsınız fakat durum çok tuhaf şöyleki bunu ben kendi bilgisayarımda hiç yaşamadım DBComboBox35.Item.loadfromfile deyip metin belgesinden veri çektiriyorum.
bi çok yerde sorunsuz çalışıyor fakat xp makinelerde örneğin 1-2 saat veri girişi yapıldı başka bir forma geçildi sonra başka bir forma derken bazen bu formlar arasında geçiş yaparken hangi form olduğu önemli değil burada cariformu açarken hata verdiği için DBComboBox35.Items.strings diye hata vermişti başka bir zaman başka bir formdaki bir nesne de bu hatayı verebiliyor. bazende hata sesi geliyor ekranda hiç bir uyarı yok ama hiç bir buttonun click olayı çalışmıyor.

Kod: Tümünü seç

Application.CreateForm(Tfrm_cariler, frm_cariler);
frm_cariler.showmodal;
create eventında

Kod: Tümünü seç

  DBComboBox35.Items.LoadFromFile(ExtractFileDir(Application.ExeName)+'\deneme.txt');
show eventında

Kod: Tümünü seç

 
  cumle:='';
  cumle:=cumle+' and sirketkodu='+QuotedStr(sirketkodu);

  qry_firmalar.Close;
  qry_firmalar.SelectSQL.Text:='';
  qry_firmalar.SelectSQL.Text:='select * from firmalar where 1=1'+cumle+'';
  qry_firmalar.Open;
  qry_firmalar.FetchAll;

ne zaman ne için verdiğini kestiremiyorum vede neden windows xp de sürekli windows 7 de çok nadir çıkıyor anlamış değilim. dxskin den şüpheleniyorum usestaki dxskinleri kaldırıyorum.
Mücadele güzelleştirir!
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: bu komutu işlemek için yeterli depolama alanı yok hatası

Mesaj gönderen mrmarman »

Sende de hata veriyorsa, hatanın kendisine odaklanıp...

Kod: Tümünü seç

DBComboBox35.Items.LoadFromFile(ExtractFileDir(Application.ExeName)+'\deneme.txt');
satırından yola çıkarak...

Kod: Tümünü seç

deneme.txt
içeriğine bir bakar mısın.. Başka bir yerde biriktirilip sonra burada yüklenen bir yapı mıdır ? deneme.txt dosyasını create eden procedure/fonksiyon ne ise ona da bir odaklan.
- Mesela :

Kod: Tümünü seç

DBComboBox35.Items.LoadFromFile(ExtractFileDir(Application.ExeName)+'\deneme.txt');
satırını geçici olarak aşağıdaki gibi statik bir değer alacak şekilde düzenle.

Kod: Tümünü seç

DBComboBox35.Items.clear;
DBComboBox35.Items.Add('değer-01');
DBComboBox35.Items.Add('değer-02');
- Bu ilgili hatanın sonlanmasına imkan sağlıyorsa hata DENEME.TXT oluşumundadır diyebilirsin. Bu dosyanın içerisine 'a'..'z', '0'..'9' gibi kabul edilebilir olanlar dışında ascii karakterler bile karışıyor olabilir. :idea:
Resim
Resim ....Resim
Kullanıcı avatarı
greenegitim
Üye
Mesajlar: 713
Kayıt: 28 Nis 2011 10:33
Konum: İstanbul

Re: bu komutu işlemek için yeterli depolama alanı yok hatası

Mesaj gönderen greenegitim »

teşekür ederim hocam bi bilgisayara windows xp kurup deneyeceğim artık ilginç tarafı her zaman vermemesi eurakelog ile bir deneyeceğim bakalım.
Mücadele güzelleştirir!
omurolmez
Üye
Mesajlar: 187
Kayıt: 31 Eki 2012 11:41

Re: bu komutu işlemek için yeterli depolama alanı yok hatası

Mesaj gönderen omurolmez »

Merhaba arkadaşlar,

@mrmarman arkadaşımızın müsadesiyle, kendi bilgisayarımızda yaşamamış olmamıza aldanmamalıyız. Asla müşterilerimiz kadar sık ve agresif kullanamayız.

Sorun combobox sorunu olabildiği gibi, programın genel sorunu da olabilir. Sanki program heap memory sini tüketiyor gibi anladım. Formlarınız sürekli açılıp kapanıyor ise, tamamen hafızadan atıldığına emin olmalısınız (uygun free çağrıları, vb). Ya da elle yarattığınız (Owner=nil) nesneler var ise, onları Free ile yok ettiğinize (veya bir container a eklediğinize) emin olmalısınız.

http://stackoverflow.com/questions/5078 ... is-command
Ömür Ölmez
Cevapla