Ben dll'cilerden biraz yardım istiyorum.
Delphide hazırladığım bir formu buttonlarıyla labelleriyle ve fonksiyonlarıyla birlikte bir dll dosyası içerisine nasıl yerleştirebilirim. Ve buradan nasıl çağırabilirim.
Ayrıca bunun yanında birde bu dll dosyasını program çalıştığı anda dll'yi yükleyerek formu veya içerisindeki fonksiyonları kullanmak istiyorum.
ilk önce dll dosyanı oluştur daha sonrada oluşturdugun bu dll dosyasından function larını programın içerisinde çağırmayı dene. aşağıda dll dosyasını nasıl oluşturacagını ve prograam içerisinden nasıl çağıracagını anlattım...
/////DLL dosyası----------------------------------------
library topla_dll;
uses
SysUtils,
Classes;
{$R *.res}
function carp(x,y:integer):integer;export;
begin
carp:=x*y;
end;
function topla(x,y:integer):integer;export;
begin
topla:=x+y;
end;
exports topla,carp;
begin
end.
Yukarıdaki dosyayı topla_dll olarak kaydettik. ve aşağıdaki kod ile de asıl programmızdan çağırdık.
Tamam benim fonksiyonlarda veya dll yazma konusunda bir sıkıntım yok sadece program içine önceden yerleştirilmemiş bir dll dosyasını runtime olarak yükleyerek içerisindeki fonksiyonlerı belirleyip bunları program çalışırken kullanmak...
LoadLibrary gibi bir fonksiyon ile yukleniyordu
runtime dll loading falan yazarak google da aratırsan bazı ornekler bulabilirsin
ben bir zamanlar normal dll yazma ve programdan cagırma hakkında aratmıstım
runtime olanlarda karsıma cıkmıstı
hatta elemanın teki super bir fonksiyon yazmıstı
dosya olarak seciyorsun yukluyor dll i
ama alıp denemedim
hatırladıklarım bu kadar
kolay gelsin
Buda bu dll'yi kullanan unit...
ondan once yukardakilerde temizlemeyi unuttuğum bazı başılkar var.
ilk rutinde 'Library Yazdir' kamış bu durumda Dll in ismi Yazdir.dll olacak o yüzden aşağıda değişiklik yapmadım.
ikinci rutinde ise
Form1.Create(...
dedikten sonra RaporForm diye devam etmişi,m .o raporform'larda Form1 olacaktı
o dll'yi derledikten sonra bununla ona ulaşırsan istediğin olacaktır iyi çalışmalar.
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
type TGoster = function :integer;stdcall;
var
Form1: TForm1;
hdn : Thandle;
Goster1 : TGoster;
yer : TFarProc;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
hdn :=LoadLibrary('Yazdir.dll');
if hdn<>0 then
begin
Yer:= GetProcAddress(hdn,'Goster');
if Yer<>nil then
begin
Goster1 := TGoster(Yer);
if goster1=0 then
Showmessage('hata');
end;
end;