selam arkadaşlar,
delphi ile dll oluştururken basit bir yerde takıldım içinden çıkamıyorum uygulamamda herşey yolunda
üzerinde basit bir query, datasource ve dbgrid olan bir dll form oluşturdum ve halihazırda bağlantı kurulu olan
ibdatabase ve transaction nesnemi dll'e parametre olarak (gönderiyorum ve kullanıyorum)
ancak gözden kaçırdığım bir nokta var sanırım uygulamayı kapatırken access violation hatası veriyor
hafızadan atılmayan bişey var gibi geliyor veya uyguladığım yöntemde bir yanlışlık var,
çağırma ve kullanım kodlarım aşağıda bakarsanız sevinirim
EXE
----------------------------
procedure TForm1.Button1Click(Sender: TObject);
var
DLLHandle : THandle;
DLLForm : procedure(Con:TIBDatabase; Trn:TIBTransaction);
begin
DLLHandle := LoadLibrary('deneme.dll');
if DLLHandle <> 0 then
try
DLLForm := GetProcAddress(DLLHandle,'myform');
DLLForm(IBDatabase1,IBTransaction1);
finally
FreeLibrary(DLLHandle);
end;
end;
DLL
-----------------------------
procedure myform(CN:TIBDatabase; TR:TIBTransaction);
begin
Application.CreateForm(Tformum,formum);
try
with formum do begin
IBQuery1.Database := CN;
IBQuery1.Transaction := TR;
IBQuery1.Open;
ShowModal;
end;
finally
FreeAndNil(formum);
end;
end;
dll parametresi olarak nesneler
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
dll parametresi olarak nesneler
En son tux tarafından 22 Şub 2011 11:13 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
Re: dll parametresi olarak nesneler
her iki projeyede sharemem unitini ekledim düzeldi, soru mükerrer ise konu kapatılabilir moderatör arkadaşlarım kusuruma bakmasınlar
Re: dll parametresi olarak nesneler
sorun cözülmüs olsada, gözüme takilan bir nokta oldu, o nedenle paylasmak istedim.
parametre olarak application gönder. variable üzerine at.
formu create edecek olan application ile, ana formunun applicationu bir olur.
finalization kisminda da, orjinal application'u variableden geri yükle.
hata vermemesi gerekir.
parametre olarak application gönder. variable üzerine at.
formu create edecek olan application ile, ana formunun applicationu bir olur.
finalization kisminda da, orjinal application'u variableden geri yükle.
hata vermemesi gerekir.
kıdemsiz üye
Re: dll parametresi olarak nesneler
açıklayıcı bilgi veren cevabın için teşekkür ederim, formu "nil" yani sahipsiz oluşturuyorum
sorunsuz çalışıyor fakat bu tabiki doğru yöntem değil.. söylediğin gibi application nesnesinide göndermekte
fayda var doğru bellek yönetimi açısından
sorunsuz çalışıyor fakat bu tabiki doğru yöntem değil.. söylediğin gibi application nesnesinide göndermekte
fayda var doğru bellek yönetimi açısından

Re: dll parametresi olarak nesneler
İlave olarak ShareMem yerine FastShareMem kullanmanızı öneririm çok daha başarılı ve yanında SahreMem için gereken DLL i dağıtmanıza gerek yok, hem DLL hemde yükleyen uygulamada uses kısımlarında ilk unit olmalı.
Google dan arama yaparak hemen temin edebilirsiniz ücretsizdir.
Kolay gelsin.
Google dan arama yaparak hemen temin edebilirsiniz ücretsizdir.
Kolay gelsin.
Volkan KAMADAN
www.polisoft.com.tr
www.polisoft.com.tr