Dll Form

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
CiTiZEN
Üye
Mesajlar: 1163
Kayıt: 06 Oca 2008 04:15

Dll Form

Mesaj gönderen CiTiZEN »

Slm Arkadaşlar son 2:30 saatim arama yapmakla geçti ancak işime yarayacak veya yarayacağını kestirebildiğim kodlar bulamadım.benim isteğim şu :
bır dll dosyası açıyorum içine form atıyorum dll den fonksiyon oluşturuyorum

Kod: Tümünü seç

procedure form(x:AnsiString);export;
  begin
Form1.Show;
  end;
  exports
  form;
ve programdan da oluşturuyorum

Kod: Tümünü seç

procedure form;far;external'project2.dll';
procedure TForm10.Button1Click(Sender: TObject);
begin
form;
end;
fakat programda buton kontrolune tıkladığım kodu çalıştırmaya kalkınca hata veriyor bu kodlarda bi mantıksızlık veya benim bilmediğim bişe mi var yardımcı olursanız sevinirim Kolay Gelsin.
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3081
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Re: Dll Form

Mesaj gönderen sabanakman »

Dll yazımında doğru parametre tanımı en önemli kuraldır.
CiTiZEN yazdı:procedure form(x:AnsiString);export;
begin
Form1.Show;
end;
exports
form;

procedure form;far;external'project2.dll';
procedure TForm10.Button1Click(Sender: TObject);
begin
form;
end;
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
Kullanıcı avatarı
CiTiZEN
Üye
Mesajlar: 1163
Kayıt: 06 Oca 2008 04:15

Mesaj gönderen CiTiZEN »

Sayın sabanakman hocam vakit ayırdığınız için tşekkürler ama hatamı anlamış deilim :( benım yazdığım kodlarda bi hata mı var yoksa onların yerine kod mu yazmam gerekli
UWESIS CORPORATION
Kullanıcı avatarı
unicorn64
Üye
Mesajlar: 919
Kayıt: 04 Nis 2006 08:56
Konum: yine yeniden Ankara ^_^

Mesaj gönderen unicorn64 »

şaban hocam renklendirme de yapmış farkedesiniz diye ama sanırım farkedemediniz.

dll de prosedür tanımı yaparken prosedüre ansistring türünden bir parametre alır demişsin, ancak dll i kullandığın yerdeki tanım ve kullanımda parametresiz olarak yazmışsın.

program dll içinde parametresiz olarak tanımlanmış form prosedürünü bulamadığı için de -belirtmemişsin ama %90 budur- olmayan bir veriye erişmeye çalışıp access violation hatası veriyor
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3081
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Re: Dll Form

Mesaj gönderen sabanakman »

sabanakman yazdı:Dll yazımında doğru parametre tanımı en önemli kuraldır.
Dll'deki kırmızılık .exe de yok.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
Kullanıcı avatarı
CiTiZEN
Üye
Mesajlar: 1163
Kayıt: 06 Oca 2008 04:15

Mesaj gönderen CiTiZEN »

farkıdanyım hocam onun ama ole de yaptıgım zaman buyrun kod ve hata

Kod: Tümünü seç

procedure settings(x:AnsiString);far;external'project2.dll';
procedure TForm10.Button1Click(Sender: TObject);
begin
settings;
end;
not enough actual parametres hatası alıyorum
UWESIS CORPORATION
Kullanıcı avatarı
hi_selamlar
Üye
Mesajlar: 523
Kayıt: 05 May 2005 03:24
Konum: DelphiTürkiye.COM

Mesaj gönderen hi_selamlar »

S.A

arkadaşlarımız zaten örneği vermişler.. ;) biraz dikkat etmelisin.

Kod: Tümünü seç

procedure settings(x:AnsiString);far;external'project2.dll'; 
procedure TForm10.Button1Click(Sender: TObject); 
begin 
settings (x değişkenini atamalısın !); 
end;
kolay gelsin.

;)
Herkes cahildir, bazi konularda.
Kullanıcı avatarı
CiTiZEN
Üye
Mesajlar: 1163
Kayıt: 06 Oca 2008 04:15

Mesaj gönderen CiTiZEN »

Hocam ben onları foruma konu açmadan once tanımladım birsürü ihtimal denedım ama olmadı en sonunda arama yapıp foruma konu açtım :S
UWESIS CORPORATION
deltas
Üye
Mesajlar: 358
Kayıt: 06 Mar 2004 01:08
Konum: Malatya...
İletişim:

Mesaj gönderen deltas »

@Citizen hocam öncelikle şunu belirteyim sorunuzu tam anlamadım. Ancak yazdığınız kodlar sürekli size hata verir.Var olan bir form mu çağırıyorsunuz? Yoksa runtimeda yeni bir formu oluşturuyorsunuz (creat). Runtime da yeni bir form oluşturduğunuz kabul ettim. Bu kodlar işinize yarıyabilir.
DLL için (uses kısmına forms eklenmeli)

Kod: Tümünü seç


procedure form(crebic:TComponent;isim:String);export;
 var
 yeniform: tform;
 begin
yeniform := TForm.Create(crebic);
yeniform.Name := isim;
yeniform.Show;
end;
  exports
  form;
end.
kullanımı :

Kod: Tümünü seç

procedure form(crebic:TComponent;isim:String);far;external'project1.dll';
procedure TForm1.Button1Click(Sender: TObject);
begin
form(self,'yeniformum');
end;

Nice İnsanlar gördüm üstünde elbise yok;
Nice elbiseler gördüm içinde insan yok.
Kullanıcı avatarı
CiTiZEN
Üye
Mesajlar: 1163
Kayıt: 06 Oca 2008 04:15

Mesaj gönderen CiTiZEN »

Hocam dll oluşturdugum zaman bi form açtım içerisinde ayarlar için butonlar felan war normal bi form onu dll olarak kaydettirip program içerisinden açmaya çalışıyorum
UWESIS CORPORATION
deltas
Üye
Mesajlar: 358
Kayıt: 06 Mar 2004 01:08
Konum: Malatya...
İletişim:

Mesaj gönderen deltas »

dll için :

Kod: Tümünü seç

library Project1;


uses
  SysUtils,
  Classes,
  forms,
  Unit1 in 'Unit1.pas' {Form1};

{$R *.res}
procedure form;export;
 var
 yeniform: tform1;
 begin
yeniform := TForm1.Create(nil);

yeniform.Show;
end; 
  exports 
  form; 
end.



kullanımı:

Kod: Tümünü seç

procedure form;far;external'project1.dll';
procedure TForm1.Button1Click(Sender: TObject);
begin
form;
end;
Nice İnsanlar gördüm üstünde elbise yok;
Nice elbiseler gördüm içinde insan yok.
Kullanıcı avatarı
CiTiZEN
Üye
Mesajlar: 1163
Kayıt: 06 Oca 2008 04:15

Mesaj gönderen CiTiZEN »

Ellerinize Sağlk hocam kodlar işe yaradı çok da ikrama geçti yardımlarınız için hepinize tskler.
UWESIS CORPORATION
Cevapla