Function içinde birden fazla parametre result etmek

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
delphist
Üye
Mesajlar: 595
Kayıt: 05 Oca 2005 04:34

Function içinde birden fazla parametre result etmek

Mesaj gönderen delphist »

S.a. Arkadaşlar normal function lar yazabiliyorum ancak sadece tek bir parametre result edebiliyorum ve functionlarımın çoğunu ortak kullanım amacından dolayı dll içerisinde tutuyorum...Birden fazla parametre geri döndüner function nasıl yaparım. Örnekle açıklayabilirseniz çok memnun olurum. Teşekkür ederim.
Kullanıcı avatarı
unicorn64
Üye
Mesajlar: 919
Kayıt: 04 Nis 2006 08:56
Konum: yine yeniden Ankara ^_^

Mesaj gönderen unicorn64 »

iki farklı yöntem kullanabilirsin.birincisi record tanımlama yaparsın ve record içinde geri değer döndüreceğin tipleri belirtirsin. fonksiyon içinde bu record tipinden bi değişkene dönecek değerleri atar ve o değişkeni gönderirsin.
ikincisi fonksiyon tanımında parametreleri yazarken başlarına var yazarsın. fonksiyona gönderdiğin parametrelerin değerini fonksiyon içinde değiştirdiğinde geriye dönüşte gönderdiğin parametrenin de değeri değişmiş olur.
biraz karmaşık oldu sanırım. örnek vermeye çalışayım.

Kod: Tümünü seç

type 
donecekdegerler=record
 karesi:double;
 kubu:double;
end;


function kare_kup_al (sayi:double):donecekdegerler;
var deger:donecekdegerler;
begin

deger.karesi:=sayi*sayi;
deger.kubu:=sayi*sayi*sayi;

result:=deger;
end;

yada

Kod: Tümünü seç


procedure kare_kup_al(sayi:double,var kare:double,var kup:double);
begin
   kare:=sayi*sayi;
   kup:=sayi*sayi*sayi;
end;

sonrada mesela buton1 in click olayında

Kod: Tümünü seç


kare_kup_al(3.0,karesi,kubu); //karesi ve kubu yerel değişken mesela

label1.caption:=floattostr(karesi);
label2.caption:=floattostr(kubu);
mkysoft
Kıdemli Üye
Mesajlar: 3110
Kayıt: 26 Ağu 2003 12:35
Konum: Berlin
İletişim:

Mesaj gönderen mkysoft »

Teşekkürler, bende bu "var" ne işe yarıyor diye düşünüyordum. Bu arada sizde şimdilik konya yazmışsınız :)
fduman
Moderator
Mesajlar: 2749
Kayıt: 17 Ara 2004 12:02
Konum: Ankara

Mesaj gönderen fduman »

out ile de sadece veri döndürürsünüz. Parametre değeri geçemezsiniz.

Kod: Tümünü seç

procedure Test(out p1, p2: string);
begin
  p1:= 'Test1';
  p2:= 'Test2';
end;

var
  t1, t2: string;
begin
   Test(t1, t2);
end;
Kullanıcı avatarı
delphist
Üye
Mesajlar: 595
Kayıt: 05 Oca 2005 04:34

Mesaj gönderen delphist »

S.a. Arkadaşlar verdiğiniz bilgiler için teşekkür ederim. Ama ben hala dll de yazdığım bir function geriye birden fazla nasıl değer döndüreceğini ve benim nasıl alacağımı anlayamadım. Belkide hiç yapmadığımdandır...Vaktiniz varsa açıklayabilirsiniz sevinirim. Teşekkürler
Kullanıcı avatarı
delphist
Üye
Mesajlar: 595
Kayıt: 05 Oca 2005 04:34

Mesaj gönderen delphist »

S.a. Arkadaşlar...Bu konuya açıklık getirecek arkadaş varsa çok memnun olacağım...Teşekkür ederim.
Kullanıcı avatarı
unicorn64
Üye
Mesajlar: 919
Kayıt: 04 Nis 2006 08:56
Konum: yine yeniden Ankara ^_^

Mesaj gönderen unicorn64 »

ben de zaten out daha doğrusu var la parametre aktarırız dememiştim. prosedür e gönderilen değişkene prosedür içinde değer aktarılarak bu değişken üzerinden değer döndürülmüş olur demiştim.

evet @mkysoft şimdilik konya. selçuk üniversitesi bilgisayar mühendisliği son sınıf. nasipse bu sene biticek.
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

@delphist

Açıklamalar oldukça açık aslında...

Örnek :

project2.dll içeriği

Kod: Tümünü seç

Function Islem( a,b : Integer;Var c,d:Integer):Integer;
begin
  c := a+b;
  d := a*b;
  result := c+d;
end;

  Exports Islem;
- Ana programımızda kullanımı ise şöyle..

Kod: Tümünü seç

Function Islem( a,b : Integer;Var c,d:Integer):Integer;
  External 'Project2.dll';

procedure TForm1.Button1Click(Sender: TObject);
Var
  a,b,c,d,e : Integer;
begin
  a := 2;
  b := 3;
  c := 0;
  d := 0;
  e := 0;

  e := Islem(a,b,c,d);
  ShowMessageFmt('%d, %d, %d', [c, d, e])
end;
Resim
Resim ....Resim
Kullanıcı avatarı
delphist
Üye
Mesajlar: 595
Kayıt: 05 Oca 2005 04:34

Mesaj gönderen delphist »

@mrman abi...gayet iyi anladım şimdi...Teşekkür ederim açıklamandan dolayı...Eyvallah... :)
Cevapla