dll içinde datamodule kullanan yok mu arkadaşlar

Firebird ve Interbase veritabanları ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
nedimtrc
Üye
Mesajlar: 23
Kayıt: 02 Nis 2007 09:31

dll içinde datamodule kullanan yok mu arkadaşlar

Mesaj gönderen nedimtrc »

selam dll içerisinde datamodule kullanmak istiyorum delphi tarafında hazırlıyorum ama ibexpertte deneme yaptığımda Access violation at address 0084E524 in module 'ibexpert.exe'. Read of address 00000038 şeklinde hata veriyor ve ibexpertte datayı kapatma mı yada restore etmemi istiyor acil yardımlarınızı bekliyorum
Kullanıcı avatarı
vkamadan
Kıdemli Üye
Mesajlar: 1935
Kayıt: 17 Mar 2004 03:52
Konum: Adapazarı
İletişim:

Mesaj gönderen vkamadan »

Merhaba,
DLL içinde her türlü formu sizin create etmeniz gerekir datamodul de buna dahil belki create etmeden kulanmaya çalışıyor olaiblirsiniz bunu kontrol etmenizi öneririm.
Volkan KAMADAN
www.polisoft.com.tr
nedimtrc
Üye
Mesajlar: 23
Kayıt: 02 Nis 2007 09:31

Mesaj gönderen nedimtrc »

üstad dediğin gibi create etmiyorum açıkçası create komutunu nereye nasıl yazacağımı bilmiyorum. data:=tdata.create(); deniyorum ama parantez içine hangi parametreyi yazacağımı bilmiyorum ve hangi satırda bu komutu yazacağımı bilmiyorum parantez içine self yazdırmıyor yardımcı olursan çok sevinirim
Kullanıcı avatarı
vkamadan
Kıdemli Üye
Mesajlar: 1935
Kayıt: 17 Mar 2004 03:52
Konum: Adapazarı
İletişim:

Mesaj gönderen vkamadan »

Merhaba,
DataModul ünüzün adının DM olduğunu varsayıyorum, datamodülü kullanmak için şu şekilde bir yapı kullanın,

Kod: Tümünü seç

with TDm.Create(nil) do
 begin
   try
    //yapılacak işlemler
finally
  Free;
end;
end;
Kolay gelsin.
Volkan KAMADAN
www.polisoft.com.tr
nedimtrc
Üye
Mesajlar: 23
Kayıt: 02 Nis 2007 09:31

Mesaj gönderen nedimtrc »

çok sağol datamodulu yükleme problemi kalktı :D yalnız küçük bir sorum olacak heralde bu seferde data tipleri tanımlarken sorun yaşıyorum
söyle söyleyim
veritabanında domain tanımladım tarih isminde tipi date seçili
unitte ise funtionum şu şekilde
FUNCTION GECIKME(SON,TAHSIL:TDateTime;KANUN,UYGULAMA:PChar;TUTAR:Currency):Currency;CDECL;EXPORT;

firebird tarafında ise söyle bir tanım yapıyorum.

DECLARE EXTERNAL FUNCTION GECIKME
TIMESTAMP,
TIMESTAMP,
CSTRING(20),
CSTRING(20),
DECIMAL(10,2)
RETURNS DECIMAL(10,2) BY VALUE
ENTRY_POINT 'GECIKME' MODULE_NAME 'KONTROL'

doğruluğunuda denemek için
ibexpertte söyle yazıyorum

select gecikme('17.09.2005 00:00','04.05.2007 00:00','AMME','AYLIK',100)
FROM rdb$database

aslında unit kısmında tdatetime yerine tdate kullanmak istiyorum ama nedense öyle yazıncada yanlış tip diyor mecburen tdatetime kullanıyorum yazdıklarımda bir hata varsa beni yönlendirirsen çok sevinirim.
nedimtrc
Üye
Mesajlar: 23
Kayıt: 02 Nis 2007 09:31

Mesaj gönderen nedimtrc »

unit UKONTROL;

interface

FUNCTION GECIKME(SON,TAHSIL:TDateTime;KANUN,UYGULAMA:PChar;TUTAR:Currency):Currency;CDECL;EXPORT;
implementation

uses DateUtils, UDATAKONTROL;

FUNCTION GECIKME(SON,TAHSIL:TDateTime;KANUN,UYGULAMA:PChar;TUTAR:Currency):Currency;
BEGIN
WITH TDATA.Create(NIL) DO
TRY
BEGIN
DATA.SERVER.Connected:=TRUE;
DATA.SERVER_YONETIM.Active:=TRUE;

DATA.TSABIT.Close;
DATA.TSABIT.SelectSQL.Clear;
DATA.TSABIT.SelectSQL.Add('SELECT * FROM SABIT');
DATA.TSABIT.Open;

DATA.TFAIZ.Close;
DATA.TFAIZ.SelectSQL.Clear;
DATA.TFAIZ.SelectSQL.Add('SELECT * FROM FAIZ');
DATA.TFAIZ.Open;

DATA.TKANUN.Close;
DATA.TKANUN.SelectSQL.Clear;
DATA.TKANUN.SelectSQL.Add('SELECT * FROM KANUN');
DATA.TKANUN.Open;

DATA.TGECIKME.Close;
DATA.TGECIKME.SelectSQL.Clear;
DATA.TGECIKME.SelectSQL.Add('SELECT * FROM GECIKME');
DATA.TGECIKME.Open;

DATA.TKANUN.Close;
DATA.TKANUN.SelectSQL.Clear;
DATA.TKANUN.SelectSQL.Add('SELECT * FROM KANUN');
DATA.TKANUN.Open;

DATA.TTATIL.Close;
DATA.TTATIL.SelectSQL.Clear;
DATA.TTATIL.SelectSQL.Add('SELECT * FROM TATIL');
DATA.TTATIL.Open;
RESULT:=12;

END;
FINALLY
BEGIN
DATA.TSABIT.Close;
DATA.TKANUN.Close;
DATA.TFAIZ.Close;
DATA.TTATIL.Close;
DATA.TGECIKME.Close;
DATA.SERVER.Connected:=FALSE;
FREE;
END;
END;
END;

end.
deneme amaçlı böyle birşey deniyorum UDATAKONTOL datamodulun uniti
ibexpertte çağırınca
Error Message:
----------------------------------------
Access violation at address 0084E524 in module 'ibexpert.exe'. Read of address 00000038
böyle bir hata veriyor yine
nasıl yapmalı çıkamdım işin içinden
Cevapla