çalıştırılan programı kapatırken hata

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
sonuncusado
Üye
Mesajlar: 37
Kayıt: 13 May 2005 03:36

çalıştırılan programı kapatırken hata

Mesaj gönderen sonuncusado »

selam arkadaşlar
ben programımda runtime sırasında yeni radiobutonlar ve grupboxlar yaratıyorum bu sorunsuz calısıyor fakat programı kapatmaay kalktığımda hata veriyo. try exception la çözmeye çalıştım ama bu defa da saçma sapan şeyler yaparak kapatıyor programı.hata acces violation.
bana yardımcı olabilirseniz çok sevinirim şimdiden teşekkürler kolay gelsin.
Kullanıcı avatarı
husonet
Admin
Mesajlar: 2962
Kayıt: 25 Haz 2003 02:14
Konum: İstanbul
İletişim:

Mesaj gönderen husonet »

break point koyarak adım adım çalıştırın hata oluşan kod satırlarını tespit edin . Sorun neymıiş bakalım.

kolay gelsin...

Gazete manşetleri
* DİKKAT :Lütfen forum kurallarını okuyalım ve uyalım...!
* Warez,crack vs. paylaşımı kesinlikle yasaktır.
Kullanıcı avatarı
vedatkaba
Kıdemli Üye
Mesajlar: 866
Kayıt: 06 Oca 2004 06:50
Konum: DARICA/GEBZE

Mesaj gönderen vedatkaba »

Access violation bellek hatası.ama hatanın devamı olması gerek diye düşünüyorum.bu hatayı aldıktan sonra tekrar uygulmanı F9 la çalıştırmayı başarabildinmi diye bir soru sorcam .

Kolay gelsin.
***********************************
Kamil odur ki; koya dünyada bir eser,
Eseri olmayanın, yerinde yeller eser.

***********************************
Kullanıcı avatarı
mustafaozdemir
Üye
Mesajlar: 137
Kayıt: 19 Haz 2004 01:56

Mesaj gönderen mustafaozdemir »

programında tiemr nesnesi falan kullandıysan programı kapatmadan önce de bu timer nesnesini kapatmıyorsan böyle bir hata alabilirsin.
ikra
Üye
Mesajlar: 901
Kayıt: 28 Nis 2005 01:26
Konum: Simdilik Topragin Üstü

Mesaj gönderen ikra »

bende bir fikir atayim ortaya...

Programin kapanacagi an belki bir nesne olusturuluyor olabilir. bir de form un onclose veya onclosequery eventinde destroy kullandiginda bu tip hatalar verebiliyor. destroy yerine free kullanmani tavsiye ederim...
kıdemsiz üye
ikra
Üye
Mesajlar: 901
Kayıt: 28 Nis 2005 01:26
Konum: Simdilik Topragin Üstü

Mesaj gönderen ikra »

bende bir fikir atayim ortaya...

form un onclose veya onclosequery eventinde destroy kullandiginda bu tip hatalar verebiliyor. destroy yerine free kullanmani tavsiye ederim...
kıdemsiz üye
Kullanıcı avatarı
vedatkaba
Kıdemli Üye
Mesajlar: 866
Kayıt: 06 Oca 2004 06:50
Konum: DARICA/GEBZE

Mesaj gönderen vedatkaba »

Programı kapatırken hangi komutları kullanıyorsun,programda radiobutonları nasıl oluşturuyorsun hatanın tamamı bumu vs..bu gibi sorulara cevap alabilirsek arkadaşlarında yardım edeceğinden eminim.biraz daha açmalısın konuyu.kolay gelsin.
***********************************
Kamil odur ki; koya dünyada bir eser,
Eseri olmayanın, yerinde yeller eser.

***********************************
ibr_ozdemir
Üye
Mesajlar: 25
Kayıt: 27 Nis 2005 02:09

Mesaj gönderen ibr_ozdemir »

eğer oluşturduğun nesneler TComponent in üstü ise ki öyle :
nereye oluşturyorsan (nil harici) program sonlanırken onları otomatik siler senin silmene gerek kalmaz. bu bilgiye göre programını gözden geçir bence kapanırken kendin siliyorsun(free) ondan oluyo(gerçi bu durumdada hata olması imkanı yok fakat silinmiş bir nesne üzerinde işlem yaptığında bahsettiğin hata ile karşılaşırsın çünkü ram de o nesneden eser kalmamıştır)
kolay gelsin
sonuncusado
Üye
Mesajlar: 37
Kayıt: 13 May 2005 03:36

Mesaj gönderen sonuncusado »

Kod: Tümünü seç

sorusayisi:=qsinaval.RecordCount;
  for i:=1 to sorusayisi do
  begin
  xgrup:=TGroupBox.Create(Self);
      with xgrup do
      begin
      Name:='grup' + IntToStr(i);
      Parent:=self;
      Caption:='';
      Width:=155;
      Height:=32;
      Left:=624;
      Top:=5+i*32;
      end;
      for j:=1 to 5 do
      begin
      xradio:=TRadioButton.Create(self);
         with xradio do
         begin
         Name:='grup' + IntToStr(i) + 'buton' +IntToStr(j);
         Parent:=self;
         Width:=16;
         Height:=16;
         Caption:='';
         Top:=18+i*32;
         Left:=599+j*32;
         end;
      xgrup.InsertControl(xradio);
      end;
  xgrup.Caption:=IntToStr(i);
  end;
nesnbeleri yaratmak için kullandığım kodlar bunlar. destroy ,free vs herseyi denedim. ama program yaratma işemini gerçekleştirisem hata veriyo. umarım anlatabilmiişmdir
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

s.a.
programa bir düğme ekle.
oluşturğun bileşenleri imha et. programı öyle kapat bakalım hata verecekmi. yok etme yöntemlerini sırayla dene destroy free bide hiç yok etmeden kapat. nesneleri yok ettiğinden emin ol.
freeandnil functionu vardı. onu kullan istersen.
bu şekilde bi dene bakalım sorun düzelecekmi.
Kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Kullanıcı avatarı
vedatkaba
Kıdemli Üye
Mesajlar: 866
Kayıt: 06 Oca 2004 06:50
Konum: DARICA/GEBZE

Mesaj gönderen vedatkaba »

Eğer oluşturduğun bir nesnenin yok edicisini iki kere çağırıyorsan hata alabilirsin mutemelen bu yüzden kaynaklanıyor olabilir.Yok edici bir nesne için hafızada ayrılan yeri serbest bırakmadır.destroy yönteminin ezerek ,nesennin yok edilmeden önce bunların çalıştırabilmesi amacı ile kod yazabiliriz.kendi kodunuzda tabiki hafıza serbest bırakmayla uğraşmanıza gerek yok bu delphi tarafından sizin adınıza yapılmakta.destroy basit olarak Tobject sınıfının yok edicisidir.
Nesneler yok edildiğin de özel temizlik kodu gerektiren sınıfların çoğu bu sanal yöntemi ezer.Yeni bir yok edici asala tanımlamanız gerekmesinin nedeni, nesnslerin genellikle free yöntemi çağıralarak yok edilmesi ve bu yönteminde sizin için ( ezilmiş sürümü de dahil olmak üzere ) destroy sanal yok edicisini çağırmasıdır.
Az öncede belirtiğim gibi, free, tobject sınıfının diğer tüm sınıflar tarafından devir alınan bir yöntemidir.Free yöntemi temel olarak ektin nesnenin (self ) destroy sanal yok edicisini çağırmadan önce nil olup olmadığını denetler.
***********************************
Kamil odur ki; koya dünyada bir eser,
Eseri olmayanın, yerinde yeller eser.

***********************************
sonuncusado
Üye
Mesajlar: 37
Kayıt: 13 May 2005 03:36

Mesaj gönderen sonuncusado »

selam arkadaşlar
ben yaratmıs oldugum nesneleri de yok ederek kapatmayı denedim amaa hata devam ediyor. lakin önemli sayabilirmiyiz bilmiyorum ama söylemeyi unuttuğum bir şey farkettim. bu forma başka bir formdan doğru giriyoruz ve o ilk formu gizliyorum. şayet sadece yaratmış olduğum nesnelerin formunu kapatırsam sorun olmuyor ama bu ilk formu da kapatırsam sorun çıkıyor.
yani ilk formun bu form kapanana kadar gizli kalmasını bu form kapandığında kapanmasını istediğimden buna mecburum. @vedatkaba senin anlattıkların bundan olabilir mi acaba?
umarım anlatabilmişimdir ilginiz içn teşekkürler
sonuncusado
Üye
Mesajlar: 37
Kayıt: 13 May 2005 03:36

Mesaj gönderen sonuncusado »

evet sorun kesinlikle ilk formu kapatırken cıkıyo free yi denedim o formun kapanmasında ve hata vermedi. sanırım sorun çözüldü teşekkürler. kolay gelsin herkese calışmalarında
Cevapla