Tüm Unit lerde kullanacagım şekilde procedure tanımlamak!

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
ssteeltr
Üye
Mesajlar: 135
Kayıt: 08 Nis 2005 03:41
Konum: Kayseri

Tüm Unit lerde kullanacagım şekilde procedure tanımlamak!

Mesaj gönderen ssteeltr »

Arkadaşlar tüm formlarda kullanabilecegim bir procedure tanımlamak istiyorum

Kod: Tümünü seç

  public
    { Public declarations }
  PROCEDURE UPDATEALLGOLGE(mak:string;yenisira:integer);
şeklinde tanımlıyorum ancak şu hatayı veriyor
[Error] Edit.pas(61): Unsatisfied forward or external declaration: 'Tfedit.UPDATEALLGOLGE'
yardımcı olursanız sevinirim
Süleyman Çelik
Kullanıcı avatarı
sadettinpolat
Moderator
Mesajlar: 2131
Kayıt: 07 Ara 2003 02:51
Konum: Ankara
İletişim:

Mesaj gönderen sadettinpolat »

prosedurun govdesini yazmadığınızdan şikayet ediyor.
ctrl+shift + c
"Sevmek, ne zaman vazgececegini bilmektir." dedi, bana.

---
http://sadettinpolat.blogspot.com/
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

s.a.
tüm unitlerde kullanmak istediğin bir procedure unitin interface kısmında tanımlaman gerekir.
pas dosyalarının yapısına ne kadar hakimsin bilmiyorum ama pas dosyalarının genel yapısı şu şekildedir.

Kod: Tümünü seç

unit XXXX;

Uses XXXXX;

interface

Procedure XXXXXXXX;
Function YYYYYYYY:type;
....

implementation

uses xxxxxxx;
Procedure XXXXXXXX;
begin
...
end;
Function YYYYYYYY:type;
begin
...
end;
end.
file-->new-->unit
komutu yaklaşık buna benzer bir kod uretir.
bu yapı içerisinde interface bloğundan sonra tanımladığın procedure ve fonksiyonları diğer unitlerden uses satırına procedure/function un bulunduğu unitin adını yazarak kullanabilirsin.
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
ikra
Üye
Mesajlar: 901
Kayıt: 28 Nis 2005 01:26
Konum: Simdilik Topragin Üstü

Mesaj gönderen ikra »

hocam eger procedure 'u tanimladiysan PUBLIC bölümünde daha sonra asagida procedure 'u yazarken hangi unit icin icinde kullandiysan onun ile tanimlamalisin. sanirim sen su sekilde yapmissin:

Kod: Tümünü seç

procedure UPDATEALLGOLGE(mak:string;yenisira:integer);
begin
//islem
end;
su sekilde yaparsan sorun kalmayacaktir:

Kod: Tümünü seç

procedure TForm1.UPDATEALLGOLGE(mak:string;yenisira:integer);
begin
//
end;
buradaki TForm1 procedure'un bulundugu unit in ismi olmali...
kıdemsiz üye
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

Aslında arkadaşın tanımladığı yer doğru. Orada dikkat edilecek olay şu; public altındaki bir procedure/function tanımı class yapısında olduğunda diğer unit lerden class ön adı ile çağırılır; öğrneğim

Kod: Tümünü seç

 DM.Yaziyla(Tutar);
gibi.. Bu arada procedure un da yazılırken procedure TDM.Yaziyla... gibi yazılması gerekir..
Eğer implementation üzerinde herhangi bir ön ek kullanmadan yapılan ve aşağıda da ön eksiz gövdesi yazılan procedure projedeki diğer unit lerden direk olarak adı yazılıp çağırılabilir..

Kod: Tümünü seç

....
....
function Yaziyla(tutar: real): string;

implementation

uses
  unit1, unit2;

{$R *.dfm}

function Yaziyla(tutar: real): string;
begin
....
  result := dönecek_değer;
end;

....
bunu diğer formlardan

Kod: Tümünü seç

Yazi := Yaziyla(tutar);
şeklinde çağırabilirsiniz :idea:
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
Kullanıcı avatarı
mepc
Üye
Mesajlar: 191
Kayıt: 26 Eyl 2003 11:39
Konum: Ankara

Mesaj gönderen mepc »

Hangi procedur nerdeydi uğraşmak istemiyorsan ana formuna bir actionlist ekleyip ilgili olayı oluşturduktan sonra diğer formlardan çok rahat bu olayı çağırabilirsin.
Bilgi paylaşıldıkça güzeldir.
Cevapla