Selamlar...
- Aynı
ADOConnection'u kullanmak neden gerekli acaba, DLL'ye
ConnectionString için gerekli parametreleri (
dosyaadi, sifre vs.)gönderip, DLL içindeki fonksiyonda create edilip free edilecek bir
AdoConnection işinizi görmez mi ?
- Library'yi yükleme şeklini yazarsan daha yardımcı olabiliriz... Yani statik bir şekilde mi yoksa program içinde lazım olduğunda dinamik bir şekilde mi çağırmaktasın...
- Şöyle bir yöntem izliyorsan statik yükleme yapıyorsun demektir.
Kod: Tümünü seç
function ArmanFunction; external 'arman.dll';
- Dinamik bir yükleme, yani lazım olduğunda yüklensin, istendiğinde kaldırılsın istiyorsanız, programın her yerinden ulaşabileceğiniz değişken türü olan
Global değişken tanımlar, DLL yüklerken Windows tarafından verilecek Handle numarasını yüklemeyi takiben bu değişkene aktarırsınız. Sonra da
FreeLibrary fonksiyonu ile bu Handle no'yu gösterebilir ve hafızadan silebilirsiniz.
- Sizin için buna örnek bir kod hazırladım...
Kod: Tümünü seç
Const
ArmanDLLAdi = 'D:\Delphi\ARMAN.DLL';
Var
ArmanDLL : THandle;
function LoadArmanDLL: Boolean;
begin
// Önce DLL yüklenmiş mi kontrolü
if (ArmanDLL <> 0) then
// DLL Zaten Yüklenmiş....
result:=True
else
begin
// DLL Yüklemeye başlıyoruz...
ArmanDLL:=LoadLibrary(ArmanDLLAdi);
// Yükleme durumuna bakıyoruz, belki yüklenememiştir...
if (ArmanDLL = 0)
then result := False // Yükleme Başarısız..
else result := True; // Yükleme Başarılı..
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
//Fonksiyonumuzun kullanılışı...
If LoadArmanDLL Then ShowMessage('DLL Başarıyla Yüklendi')
else ShowMessage('DLL Bulunamadı/Yüklenemedi');
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
If ArmanDLL <> 0 then
begin
FreeLibrary(ArmanDLL);
ArmanDLL := 0;
ShowMessage('DLL Başarıyla Temizlendi');
end
else ShowMessage('DLL Yüklenmemiş');
end;