Fonksiyonlar

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
şahmeran
Üye
Mesajlar: 17
Kayıt: 06 Ağu 2003 09:37
Konum: İstanbul

Fonksiyonlar

Mesaj gönderen şahmeran »

Merhaba arkadaşlar,

1.) Bir fonksiyon yazmak istiyorum, yazdığım fonksiyonun içinde combobox'tan bilgi almak istiyorum ama bir türlü ne combobox'ı gördü nede global olarak tanımladığım değişkenleri gördü. Fonksiyonun içinde hem global olarak tanımladığım değişkenleri hemde comboboxı nasıl görebilirim?

2.) Bir fonsiyona 2 veya daha fazla değişken göndermek istiyorum ve fonksiyon içinde bunları işleme tabi tuttup sonucu tekrardan istediğim tipte göndermek istiyorum. Böyle bir fonsiyonun kabaca kodlarını yazabilir misiniz?
(Göndereceğim değişkenler integer veya string olabilir)




Teşekkür ederim.
İyi çalışmalar
Mağrur olma padişahım senden büyük Allah var.
mbt
Üye
Mesajlar: 165
Kayıt: 27 Şub 2004 01:23

Mesaj gönderen mbt »

1. Sorunuza cevap:

Hazırladığınız fonksiyonu form sınıfının oraya da koymalısınız ki diğer nesneler ile iletişim kursun. Ben "yerogren" diye basit bir fonksiyon hazırladım ve şu şekilde "tform1" sınıfına dahil ettim:

Kod: Tümünü seç

Unit Unit1;
interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls;

type
  TForm1 = class(TForm)
    ComboBox1: TComboBox;
    Edit1: TEdit;
    Button1: TButton;

{ Tform sınıfına dahil ediyorum hazırladığım fonksiyonu }

Function yerogren(unsur:string):byte;


    procedure Button1Click(Sender: TObject);

  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
Şimdi bunu program içinde oluştururken de şu şekilde olacak:

Kod: Tümünü seç

Function Tform1.yerogren(unsur:string):byte;
Begin
result:=combobox1.Items.IndexOf(unsur)
end;
Dikkat ettiyseniz baştaki "Tform1.yerogren" şeklinde kullandım. Boylece
"combobox1" nesnesiyle etkileşimli kullanabilirsiniz.
Meselâ:

Kod: Tümünü seç

procedure TForm1.Button1Click(Sender: TObject);
begin
edit1.text:=inttostr(yerogren('Veli'));
end;
şeklinde. Ben bir form oluşturdum ve combobox'a "Ali-Ahmet- Hasan-Veli" gibi girdiler girdim. Bu fonksiyon ile Veli'nin hangi kayıtta tutulduğunu görebiliyorsunuz.


2.Sorunuza gelecek olursak, fonksiyon ile birden fazla değer için benim bildiğim 2 yöntem var.

1.si pointer kullanımı
2.si var şeklinde fonksiyon içinde başka bir değişken tanımlaman.


1. yöntem biraz karşık olduğundan 2.yöntemi göstermek istiyorum:

Kod: Tümünü seç

Function bilgial(unsur,aranacak:string; var deger1:integer):boolean;
Begin
if pos(aranacak,unsur)<>0 then result:=true
else
result:=false;
deger1:=pos(aranacak,unsur);
end;
Dikkat ettiyseniz deger1 'i var başlayarak tanımladım. Böylece bu değişkene de bilgi gönderimi yapabilirim. Bunu çoğaltabilirsin de.

Yalnız bunu kullanırken de kullanacağınız prosüdür veya fonksiyonun başında
var ile aynı tipte başka bir değişken tanımlayarak kullanacaksınız.
Şöyle:

Kod: Tümünü seç

procedure TForm1.Button1Click(Sender: TObject);
var
deger:integer;  // ayrı olarak integer bir veri tanımladım.
begin

// yukarıda integer tipinde tanımladığım "deger" değişkenine bilgial fonksiyonunda kullanarak değer yollattırıyorum.

if bilgial(edit1.text,'@',deger)=true then
showmessage(inttostr(deger));
end;
Kolay gelsin.
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

S.A.
1. comboboxların önüne formun adını referans göstererek kullanabilirsiniz.

Kod: Tümünü seç

form1.combobox1
yada bakınız üstteki cevap.
2.

Kod: Tümünü seç

 Procedure strekle(var newstr:strnin; eklenecek:string);
begin
newstr:=newstr+' '+eklenecek;
end;
bu procedure de newstr değişkeni geriye dönen bir değer .(geriye göndermek istediğiniz değerin önüne var yazıyoruz.
Bu işlemi function ile de yapılabilir.

Kod: Tümünü seç

Function strekle(var newstr:string; eklenecek:string):boolean;
begin
result:=false;
newstr:=newstr+' '+eklenecek;
result:=true;
end;
bu örnek kullanışlı değil kullanımı görmen açısından yazdım şöyle daha kullanışlı olur

Kod: Tümünü seç

Function strekle(newstr, eklenecek:string):string;
begin
result:=newstr+' '+eklenecek;
end;
kullanımları

Kod: Tümünü seç

var
a,b:string;
begin
a:='merhaba';
b:='dünya';
//1.Procedure
strekle(a,b);
showmessage(a);
//1.function
if strekle(a,b) then showmessage(a);
//2.function
showmessage(strekle(a,b));
umarım anlaşılır bişeyler olmuştur.
iyi çalışmalar.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Cevapla