Function içinde birden fazla parametre result etmek
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Function içinde birden fazla parametre result etmek
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.
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.
yada
sonrada mesela buton1 in click olayında
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;
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;
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);
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;
@delphist
Açıklamalar oldukça açık aslında...
Örnek :
project2.dll içeriği
- Ana programımızda kullanımı ise şöyle..
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;
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;