DLL içindeki form kapanaşında hata

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
serbek_tr
Üye
Mesajlar: 362
Kayıt: 16 Ağu 2004 12:54

DLL içindeki form kapanaşında hata

Mesaj gönderen serbek_tr »

Hayırlı çalışmalar herkese;

Bir dll form um var ve bu form içinde de başka bir form var ana programdan dll i çağırıyorum çağırma ve bırakmada problem yok ancak çağrılan dll içindeki formu çağırdıktan sonra kapatırken dll formundaki bir yere örneğin bir edite text yazdırıyorum şu hatayı veriyor dll form u dll şeklinde değilde normal form olarak kullandığımda bu hata ile karşılaşmıyorum.
hata : Project1.exe raised exception class EAccessViolation with message 'Access violation at address 00E43B84 in module ' customer.dll' Read of address 000002E0. process stopped.

Teşekkürler;
(Ya dostlar birşey istesem Allah Rızası için bir 30 sn. ayırın, bana ve ihtiyacı olan herkese hayırlar versin diye Yüce Rabbime dua edin benim şu an ihtiyacım var. Allah Razı olsun)
Procedure Forum.Imza(Sender: TObject)
Begin
ShowMessage('Her türlü fikire, Her zaman açığım')
End;
fatihmemis
Üye
Mesajlar: 9
Kayıt: 24 Haz 2004 12:06

Mesaj gönderen fatihmemis »

Sanırım sorununu biraz daha detaylandırırsan (örnek kodlar, kodların yazıldığı olaylar gibi) yardımcı olabilirim. Genelde adres hataları yanlış kod kullanımı ile ilgili olmaktadır.
Saygılar...
Kullanıcı avatarı
serbek_tr
Üye
Mesajlar: 362
Kayıt: 16 Ağu 2004 12:54

Mesaj gönderen serbek_tr »

1. kod dll içindeki formda yeni tuşuna ait kod

Kod: Tümünü seç

****1. kod  - bu kodlar dll formuna ait
procedure Tcustomerform.newClick(Sender: TObject);
begin

Application.CreateForm(TWaitF, WaitF);
 WaitF.WaitPanel.Caption:='Lütfen Bekleyin... Yeni Kayıt İşleniyor.';
 WaitF.Show;
 WaitF.Update;

 Try
  CustomerTbl.Insert
 Except
 On E:Exception do
 Begin
   WaitF.Hide;
   WaitF.Free;
    MessageF('Dosya Erişim Hatası','Yeni Kayıt Oluşturulamadı!','',
   'CustomerForm','ME',1);

   Exit;
 End ;
 End ;
 WaitF.Hide;
 WaitF.Free;

Application.CreateForm(TInputF, InputF);
InputF.ShowModal;

end;
Burasıda yukarıda ki kod ile açılan kayıt giriş penceresinden iptal diyerek çıkmak için ama çıkarken bir soru yöneltiyor

Kod: Tümünü seç

****2. kod
procedure TInputF.EscapeClick(Sender: TObject);
begin
 MessageF('Uyarı Mesajı','Düzenleme veya Kayıt ekleme durumundasınız'
 ,'Yaptığınız işlemler kayıt edilmeyecek, Yinede çıkmak istiyormusunuz?',
     'InputF','MQ',2);
*** aşağıdaki satırlar işlemeden önce verdiğim 3. kod kısmı işlev görüyor
 If MessageIn='Evet' Then // MessageForm dan MessageIn değişkenine gelen text evet ise
 Begin
  CustomerForm.CustomerTbl.Cancel;
  Close;
 End;
end;

Kod: Tümünü seç

***3. kod
procedure TMessageForm.OkeyBtnClick(Sender: TObject);
begin
If MessageOut.Text='CustomerForm' Then
CustomerForm.MessageIn.Text:='Evet';
If MessageOut.Text='InputF' Then // bu mesaj formu InputF formu tarafından çağrılmış ise
InputFU.MessageIn:='Evet';// InputF formundaki MessageIn değişkenine Evet gönder

Close; // yukarıdaki işlem gerçekleşmese direk close göndersem hata vermiyor
end;
Procedure Forum.Imza(Sender: TObject)
Begin
ShowMessage('Her türlü fikire, Her zaman açığım')
End;
Kullanıcı avatarı
serbek_tr
Üye
Mesajlar: 362
Kayıt: 16 Ağu 2004 12:54

Mesaj gönderen serbek_tr »

arkadaşlar bu durum önemli ya (önemli yazdım diye kızmasın kimse günlük konuşmada sıkça kullanılır ve gerçekten önemli) bu sorun yüzünden ilerleme kaydedemedim beklemedeyim ne ettiysem olmuyor
Procedure Forum.Imza(Sender: TObject)
Begin
ShowMessage('Her türlü fikire, Her zaman açığım')
End;
Kullanıcı avatarı
feinpus
Üye
Mesajlar: 214
Kayıt: 17 Kas 2003 04:37
Konum: İstanbul
İletişim:

Mesaj gönderen feinpus »

İlk olarak kod satırlarını debug et ve hangi satırda hata verdiğini tespit et burdan bakınca görmek zor olur.

Ayrıca bu hata benimde başıma gelmişti nedenlerinden biri en azından benim programımda oluşma nedeni henüz oluşturulmamış bir nesnenin veya formun oluşturduğum bir diğer form içerisinde kulanmaktan kaynaklanıyordu.

Çözümü ise formların oluşturulma sırasını filan değiştirdim ilk olarak gerekli nesneleri oluşturdum filan yani db bileşenleri datamodul gibi. sendeki hata da komut sırası yüzünden olablir...
Oldeye Software
http://www.oldeye.com
Cevapla