DLL de class kullanımı nasıl?

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
MicroChip
Kıdemli Üye
Mesajlar: 1119
Kayıt: 02 Ağu 2003 01:02
Konum: İstanbul
İletişim:

DLL de class kullanımı nasıl?

Mesaj gönderen MicroChip »

Merhabalar,

Elimde VB'de yazılmış bir DLL var yazan adamlar da delphi bilmiyo bende delphide bir dll'nin class olarak nasıl alınacağını bilmiyom. neyse:

olay şöyle: bu dll içinde bir class tanımlanmış ve bu class export oluyo

atıyorum

VB'de

dim microchip as cokclasdosya

tanımlanıp ve de bu

ii=microchip.tarihal("ahmet","ceylan")
aa=microchip.dogumtarihi("ahmet","ceylan")

şeklinde kullanılıyo

fakat ben bu class dosyayı delphide yapamadım yardımcı olursanız sevinirim.

benim yaptığım denemeler ise

function tarihal(a,b:string):variant; external "attim.dll";

fonksiyon isimlerini bilmediğimden de (bilsem farketmez sanırım çünkü class olarak tanımlandığını söylüyo)

function tarihal(a,b:string):variant; external "attim.dll" name "tarihal";
yemiyo zaten bunu da denedim.

Bu yazıda da Türkçe'yi katlettim galiba :) ama sanırım açık seöik anlaşıldı.
Kafkas Kartalı Kabarday
Sitesi!= http://www.ahmetceylan.com
Resim
Kullanıcı avatarı
freeman35
Admin
Mesajlar: 2380
Kayıt: 12 Haz 2003 04:05
Konum: merkez camii yanı

Mesaj gönderen freeman35 »

Öncelikle bir class değil, yani DLL içinde bir class ı çıkartamazsın. Class olarak kullanmak için onun activx olması lazım.
Senin yazdığına gelince uzun zaman oldu kullanmayalı ama yanılmıyorsam variable isimlerini istediğin gibi verebilirsin ama sırası ve tipi aynı olmak zorunda, sendeki problem sanırım function tipinde, delphi içinde variant tipi belli olmayan değişkenler için kullanılan bir değişken tipi. VB buna izin veriyormu bilmiyorum, yada aradaki iletişim nasıl olur bilmiyorum.
aldığın hatayı tam olarak yazarsan oradan belki bir çözüm bulabiliriz
Kolay gele
ZAGOR TENAY TÜRK'tür... TÜRK kalacak...
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5

Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
Kullanıcı avatarı
undefined
Moderator
Mesajlar: 565
Kayıt: 06 Eki 2003 12:01
Konum: Bursa
İletişim:

Mesaj gönderen undefined »

Bunun üzerinbe bir makale okumuştum. İlk öncelikle kedine delphide bir abstract (soyut) class oluşturuyon. Bu classın Dll liçinde bulunan classla aynı özelliklere sahip olması lazım. Sonra bu fonksiyonu şöyle tanımlaman lazım.


Şimdi sen merak etmişindir soyut class da ne oluyoki ?

cevap: Soyut class, fonksiyonları ve prosedürleri sonua "abstract" yönergesi eklenmiş classdır.

ör : "procedure deneme;absract;" gibi

Böyle bir yönerge eklenmiş procedure ve fonksiyon, implementation kısmında olşturulması gerekmez. Yani pointerına belli bir adres atanması design timeda yapılması gerekmez.
// Dll içindeki classın aynısı;

type
Tabstractclass = class;
x:integer;
y:integer;
procedure Fdenem;Abstract;

// Delphi bizden bu procedure u implementationda
// tanımlamamızı istemicek

end;

Function tarihal(a,b:string):TAbsractClass;external"attim.dll";

var
deneme:Tabstractclass;

implementation

begin
...
...
tarihal(a,b) := deneme;
...
...
end.
Sanırım çok fazla açıklayıcı olamadım. :)

Daha detaylı bilgi için:

Ruhver barengi, Delphi 5'e bakış sayfa 708
Kullanıcı avatarı
MicroChip
Kıdemli Üye
Mesajlar: 1119
Kayıt: 02 Ağu 2003 01:02
Konum: İstanbul
İletişim:

Mesaj gönderen MicroChip »

sağolun arkadaşlar ben bunu bugun yani 06 şubat 2004 öğle saatlerinde hallettim. gerçi biraz uğraştım ama sorun morun kalmadı. Hatta o kadar çok uğraştım ki neredeyse object olup çıkacaktım bende :) evet freman senin dediğin gibi activex ve ole***.tlb miydi neydi onu kullanarak halletmiştim zaten
yinede cevaplarınız için teşekkürler...

yaptığım kodu buraya yazamıyorum çünkü şu an evdeyim kod işyerinde :)
Kafkas Kartalı Kabarday
Sitesi!= http://www.ahmetceylan.com
Resim
Cevapla