| gkimirti | 01.10.2003 - 16:57:58 |
| ibphoneix.com da examples kısmında ekte linki bulunan makaleyi denedim
kendime ornek bir dll olusturdum http://www.ibphoenix.com/a590.htm?a=ibphoenix&s=1065013937:153395&page=ibp_howto2 delphi deki dll projesi library mylib; function Power2(var i: Integer): Integer; begin result:=i*i; end; exports Power2; end. build edip mylib.dll aldım bunu pc nin muhtelif yerlerine kopyaladım (Firebird bin , udf dizinlerine Winnt ve System dizinlerine) DbWorkbench te bir udf tanımı girdim DECLARE EXTERNAL FUNCTION POW2 INTEGER RETURNS INTEGER BY VALUE ENTRY_POINT 'Power2' MODULE_NAME 'mylib'; udf eklendi test etmek icin select Pow2(3) from rdb$database calıstırıyorum ama < ERROR: ISC ERROR CODE:335544343 ISC ERROR MESSAGE: invalid request BLR at offset 60 function POW2 is not defined module name or entrypoint could not be found STATEMENT: TIB_DSQL: "<TIB_Script>.<TIB_DSQL>." seklinde bir error alıyorum simdi nerede bir hata var :x Saygılar | |
| Kuri_YJ | 01.10.2003 - 17:35:34 |
library mylib; function Power2(var i: Integer): Integer; cdecl ; begin result:=i*i; end; exports Power2; end. Kendi makinamda değilim örneği şu an gönderemiyorum, ama Function'ın declarasyonunu yaparken cdecl şeklinde bir belirtme yapıyorsun. Yani veri alışverişinde (dll'lerden) Use C Declaration demek oluyor :) Pascal'ın farklı C'nin farklı, onların verilerinde low high byte word olayları filan var ya bu sebeple olabilir !... Ama benim fiilen yazdığım ve çalıştırdığım UDF'ler var ayrıca bir UDF library bulmuştum onu da sana göndereyim.. Makinama kavuşup internete bağlandığımda :) Kolay gelsin Not : cdecl'i helpten bir oku detaylı anlatıyor :) Ve senin yazdığında kodda bunu ekle sanırım çalışır.[size=24:4d15604d14][/size:4d15604d14] | |
| gkimirti | 02.10.2003 - 10:37:38 |
| yukarıda yazdıgım library bugun bir sekilde calıstı
ama firebird serveri gocertti yani server kendini kapatyor ben bu fonksiyonu kullanınca neyse dedim sonra tum maylib.dll leri (bir cok yere kopyalamıstım) bilgisayarımdan sildim daha onceki yazdıgım hatayı verdi iyi gusel sonra bu fonksiyonu test ettigim stored proceduru silmeye kalkısıyorum bir turlu silmiyor yukarıdaki entry not found hatasını veriyor udf yi kaldırmaya calısıyorum bu sefer dependencie problemi cıkıyor ne yapacagım simdi kaldı oyle ben nasıl yok etsem bu proceduru ve udf tanımını | |
| gkimirti | 02.10.2003 - 10:58:06 |
| hele sukur be en sonunda hallettim
hatta bu konuda bir makale hazırlayıp (daha dogrusu linkini verdigim makaleyi biraz tercume edip biraz ekleyerek) mustafa beyin sitesine de izin verirse koyarız insallah onemli noktalar: udf deklarasyonunda DECLARE EXTERNAL FUNCTION POW2 INTEGER RETURNS INTEGER BY VALUE ENTRY_POINT 'Power2' MODULE_NAME 'mylib'; dll ismi .dll siz olacak ve firebird udf klasorune kopyalanacak delphide hazırladıgım dll de fonksiyon tanımı sonuna kuri nin dedigi gibi cdecl anahtar sozcugu eklencek function Power2(var i: Integer): Integer;cdecl; begin result:=i*i; end; galiba server stop edip tekrar calıstırmak da gerekebilir en sonunda bunlar olunca sorunsuz calıstı kuri eger sende sendeki udf libraryleri bana gonderirsen bunlarıda sayın adminin izniyle siteye koyabiliriz herkeste faydalanmıs olur oh be uzerimden bi yuk daha kalktı kalın saglıcakla | |
| Kuri_YJ | 02.10.2003 - 13:22:38 |
| Selam,
IB_UDF Zip isimli dosyayı göndermeye çalışıyorum (çalışıyorum çünkü GPRS üzerinden bağlantım var şu anda ve pek verimli olmuyor, özellikle bizim evin bulunduğu yerden <:( ) Umarım başarırım :) Kolay Gelsin. | |
| gkimirti | 02.10.2003 - 14:11:54 |
| http://www.ibphoenix.com/a457.htm
ilgili linkte bir yıgın udf library mevcut indirip bi bakacagım | |
| SieS | 03.03.2004 - 11:26:54 |
| Merhaba
Firebird, triger procedure derken azıcık azıcık bişeyler öğrendim sanıyorum akşam kendimi test ettim bol trigerli procedurlu bir database oluşturdum gayet güzel çalıştı baya keyfe geldim bilmeden büsür şeyin hamallığını yapmışım ya neyse geç oldu güzel oldu şimdi sınanın UDF lere geldiğini düşünüyorm arattım sizin muhabetiniz geldi belliki bu işi iyi biliyorsunuz . Vaktinizin uygun olduğu bir zamanda UDF konusunda bana yardımcı olursanız memnun olurum . UDF nedir ne yapar nasıl çalışır gibi. Kaynak döküman örnek vs. Şimdiden teşekkür ederim. Allah razı olsun. | |
| rsimsek | 03.03.2004 - 11:37:34 |
| UDF; yukarıda verilen örnekteki gibi veritabanının tanımadığı fonksiyonları tanımlamak için kullanılır. mesela trunc() fonksiyonu, logaritma fonksiyonu yazabilirsin, exponansiyel (exp(x, y) x nin y inci kuvveti) gibi fonksiyonları eğer ihtiyacın varsa udf yazıp ekliyebilirsin. zaten ib ve fb program files klasörlerindeki UDF klasörlerine bakarsan bir sürü örnek var. | |
| gkimirti | 03.03.2004 - 11:49:17 |
| cok gerekmedikce udf yazmaya gerek yok
firebird udf klasoru icindeki dll de yeterince fonksiyon mevcut yanındaki *.sql dosyasını calıstırdıgın zaman hepsini database e eklemekte udflerin en buyuk avantajı sorguların icerisinde kullanılabilmeleri | |
| mussimsek | 03.03.2004 - 11:52:27 |
hatta bu konuda bir makale hazırlayıp (daha dogrusu linkini verdigim makaleyi biraz tercume edip biraz ekleyerek) mustafa beyin sitesine de izin verirse koyarız insallah
ne demek Gökmen hocam, makale hazırlayıp, Makale ve İpucu kısmına gönderebilirsin. Ben onu siteye ekliyorum zaten. IB_UDF Zip isimli dosyayı göndermeye çalışıyorum
abi bana gönderirsen, siteye koyayım. Herkes faydalansın. Kolay gelsin. | |
| mussimsek | 04.03.2004 - 11:42:23 |
| Kuri_TLJ'nin gönderdiği dosyaları siteye koydum. Teşekkürler abi.
http://www.delphiturkiye.com/dfiles/ib_udf.zip http://www.delphiturkiye.com/dfiles/nb_ib_utils.zip Kolay gelsin. | |
| Kuri_YJ | 04.03.2004 - 11:51:26 |
| Recaaaaa ederim Admin'İm Mustafa'm :)
Senin emeklerinle :) Kolay Gelsin. | |