frxReport ikinci defa açtığımda hata

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Abrak
Üye
Mesajlar: 189
Kayıt: 18 Kas 2004 05:30

frxReport ikinci defa açtığımda hata

Mesaj gönderen Abrak »

selam arkadaşlar;
MDIChild formlarda cxgrid lerde seçili bilgileri Frxreport ile yazdırıyorum bir sorun yok fakat mdichild formu kapatıp tekrar açtığımda ve aynı işlemi yapmak istediğimde anlamsız hatalar veriyor çoğu zaman formu kapatmadan yaptığım işlemlerde sorun çıkmıyor..
formu kapattığımda frxreport'u falanda bellekten temizlemek falan gerekiyormuki acaba

formclose

Kod: Tümünü seç

self.Free;
rpr_sfax_form := nil;
Başkasına Olan Saygımız.. Kendimize Olan saygıdır..
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3081
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Re: frxReport ikinci defa açtığımda hata

Mesaj gönderen sabanakman »

Abrak yazdı:selam arkadaşlar;
MDIChild formlarda cxgrid lerde seçili bilgileri Frxreport ile yazdırıyorum bir sorun yok fakat mdichild formu kapatıp tekrar açtığımda ve aynı işlemi yapmak istediğimde anlamsız hatalar veriyor çoğu zaman formu kapatmadan yaptığım işlemlerde sorun çıkmıyor..
formu kapattığımda frxreport'u falanda bellekten temizlemek falan gerekiyormuki acaba

formclose

Kod: Tümünü seç

self.Free;
rpr_sfax_form := nil;
self.Free de nereden çıktı. Sakın böyle yapma. Bunun yerine örneğimi kullan.

Kod: Tümünü seç

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  Action:=caFree;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  if Sender=Form1 then Form1:=nil;
end;
sen eğer formu free yaparsan VCL'e ne kalır :) . Daha onClose olayından sonra VCL'in o formla başka işleri var. Sakın böyle kullanma. İyi çalışmalar.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
Abrak
Üye
Mesajlar: 189
Kayıt: 18 Kas 2004 05:30

Mesaj gönderen Abrak »

sabanakman;
pek farklı olduğunu düşünmedim söylediğinizin fakat genede denedim sonuç değişmedi aynı hatalar mevcut
Başkasına Olan Saygımız.. Kendimize Olan saygıdır..
Abrak
Üye
Mesajlar: 189
Kayıt: 18 Kas 2004 05:30

Mesaj gönderen Abrak »

frxreport'u şu şekilde çağırıyorum acaba burda olabilirmi sorun

Kod: Tümünü seç


       dataform.frxReport1.LoadFromFile('data\5.fr3',false);
       dataform.frxReport1.ShowReport(true); // Önizleme.
Başkasına Olan Saygımız.. Kendimize Olan saygıdır..
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3081
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Mesaj gönderen sabanakman »

Burada soruyu yanlış aktarma ile ilgili sorunlar var galiba. Çünkü bu şekilde kullandığım hiç bir modülden hata yemedim. Belki başka bir noktada hata oluşuyordur. Bu arada formları göstermeden önce oluşturuyormusunuz. Mesela:

Kod: Tümünü seç

if not Assigned(Form1) then Form1:=TForm1.Create(Application);
Form1.Show;// veya ShowModal
gibi bir kodla form yok edildikten sonra tekrar oluşturulması gerekmektedir.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

s.a.
arkadaşım sıkıntı formu free etmende değil free ettiğin formu tekrar create etmemende.
muhtemelen rapor formun otomatik olark create ediliyordur.(project>options>forms kısmından görebilirsin). sen formu ilk çağırdığın zaman normal gösteriyor sonra formu kapatınca formu free ediyorsun. tekrar formu çağırdığın zaman form free edildiği için AV alıyorsun. bunu engellemek için formu çağırmadan önce nil olup olmadığını kontorl edip nilse formu oluşturman yeter. Madem formu manuel oluşturuyorsun o zaman otomatik create listesinden çıkarda program açılırken fazla beklemesin. :wink:
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Abrak
Üye
Mesajlar: 189
Kayıt: 18 Kas 2004 05:30

Mesaj gönderen Abrak »

aslangeri yazdı:s.a.
arkadaşım sıkıntı formu free etmende değil free ettiğin formu tekrar create etmemende.
muhtemelen rapor formun otomatik olark create ediliyordur.(project>options>forms kısmından görebilirsin). sen formu ilk çağırdığın zaman normal gösteriyor sonra formu kapatınca formu free ediyorsun. tekrar formu çağırdığın zaman form free edildiği için AV alıyorsun. bunu engellemek için formu çağırmadan önce nil olup olmadığını kontorl edip nilse formu oluşturman yeter. Madem formu manuel oluşturuyorsun o zaman otomatik create listesinden çıkarda program açılırken fazla beklemesin. :wink:
kolay gelsin.
sevgili aslangeri otomatik crate gibi bir hata yapmadım yalnız bir ayrıntı daha var fastreport bileşenlerini datamodulede kullanıyorum diğer formlarım daha öncede söylediğim gibi mdchildform lar

Form Oluştururken

Kod: Tümünü seç

if (rpr_sfax_form=NIL) then rpr_sfax_form:=Trpr_sfax_form.Create(self);
rpr_sfax_form.Show;
FormClose

Kod: Tümünü seç

self.Free;
rpr_sfax_form := nil;
Fastreport Önizleme

Kod: Tümünü seç

       dataform.frxReport1.LoadFromFile('data\5.fr3',false);
      dataform.frxReport1.ShowReport(true); // Önizleme.
Son olarak tekrarlayım sorunumu hiçbir sorun gözükmüyor ilk açtığımda formu (anaformu kastetmiyorum) önizlemede falan sorun yok fakat ilgili formu kapatıp tekrar açtığımda önizlemeye geçerken hata veriyor ve programı kapatıp açmam gerekiyor düzelmesi için
Başkasına Olan Saygımız.. Kendimize Olan saygıdır..
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

s.a.
o zaman
kodları satır satır çalıştırıp hangi satırda hata verdiğine bakın.
verdiği hata mesaj(lar)ını tam olarak yazın.
bide öyle bakalım.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Abrak
Üye
Mesajlar: 189
Kayıt: 18 Kas 2004 05:30

Mesaj gönderen Abrak »

aslangeri yazdı:s.a.
o zaman
kodları satır satır çalıştırıp hangi satırda hata verdiğine bakın.
verdiği hata mesaj(lar)ını tam olarak yazın.
bide öyle bakalım.
en sonda fastreport çalıştığında hata verdiği için kod hatası mevcut değil

verilen hata

Kod: Tümünü seç

Aşağıdaki hatalar oluştu
acces violation at adres 000000 read of adres 00000
veya

Kod: Tümünü seç

access violation at adress 005716B8 in module 'satis.exe' read of adress 0000278
Başkasına Olan Saygımız.. Kendimize Olan saygıdır..
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

av genelde create edilmemiş bir nesneye ulaşmaya çalıştığı zaman verir.
formları free ettiğiniz satırları iptal edip öyle bi deneyin. eğer hata vermezse sorun formları free etme yönteminizde olabilir.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Abrak
Üye
Mesajlar: 189
Kayıt: 18 Kas 2004 05:30

Mesaj gönderen Abrak »

aslangeri yazdı:av genelde create edilmemiş bir nesneye ulaşmaya çalıştığı zaman verir.
formları free ettiğiniz satırları iptal edip öyle bi deneyin. eğer hata vermezse sorun formları free etme yönteminizde olabilir.
en başta demiştim birşey free etmem gerekiyor sanırım diye vede öyle oldu aslangeri sayende project>options>forms incelediğimde bütün frxDBDataset leri oraya tanımladığımı gördüm dolasıyla formu free ettiğimde ilgili frxDBDataset free edilmemiş oluyor ve aynı formu çağırıp işlem yapmak istediğimde free edilmemiş hafızadaki frxDBDataset ile çakışıyor diye bir sonuç çıkardım sanırım onları ilgili formlara aldığımda formla birlikte yok olacağından düzelecek gibi çözüm

ilgileriyle yönlendiren aslangeri ve sabanakman tşk ederim..
Başkasına Olan Saygımız.. Kendimize Olan saygıdır..
Cevapla