Delphi'de İşlevler ve Prosedürler Nasıl Kullanılır

Daha önce bazı ortak görevleri yerine getirmek için aynı kodu tekrar tekrar yazarken buldunuz mu? etkinlik sahipleri? Evet! Bir programdaki programlar hakkında bilgi edinmenin zamanı geldi. O mini programlar altyordamlarını diyelim.

Altyordamlara giriş

Altyordamlar, herhangi bir şeyin önemli bir parçasıdır. Programlama dili, veDelphi Istisna değil. Delphi'de genellikle iki tür alt rutin vardır: bir fonksiyon ve bir prosedür. Bir işlev ve bir prosedür arasındaki olağan fark, bir işlevin bir değer döndürebilmesidir ve bir prosedür genellikle bunu yapmaz. Bir işlev normalde ifadenin bir parçası olarak adlandırılır.

Aşağıdaki örneklere göz atın:

prosedür Merhaba de(const sWhat:sicim); başla
ShowMessage ('Merhaba' + sWhat); son; fonksiyon Yaşında(const Doğum Yılı: tamsayı): tamsayı; var
Yıl, Ay, Gün: Kelime; başla
DecodeDate (Tarih, Yıl, Ay, Gün); Sonuç: = Yıl - Doğum Yılı; son; 

Alt rutinler tanımlandıktan sonra, bunları bir veya daha fazla kez çağırabiliriz:

prosedür TForm1.Button1Click (Gönderen: TObject); 
instagram viewer
başla SayHello ('Delphi Kullanıcısı'); son; prosedür TForm1.Button2Click (Gönderen: TObject); başla SayHello ('Zarko Gajic'); ShowMessage ('Siz' + IntToStr (YearsOld (1973)) + 'yaşında!'); son;

Fonksiyonlar ve Prosedürler

Gördüğümüz gibi, hem fonksiyonlar hem de prosedürler mini programlar gibi davranıyor. Özellikle, kendi türlerine, sabitlerine ve içlerinde değişken bildirimlere sahip olabilirler.

Bir (Miscellaneous) SomeCalc fonksiyonuna daha yakından bakın:

fonksiyon SomeCalc. (const SSTR'yi: sicim; const iYear, iMonth: tamsayı; var iDay: integer): boole; başla...son; 

Her prosedür veya fonksiyon bir başlık yordamı veya işlevi tanımlayan ve parametreler rutin varsa kullanır. Parametreler parantez içinde listelenmiştir. Her parametrenin tanımlayıcı bir adı vardır ve genellikle bir türü vardır. Noktalı virgül, bir parametre listesindeki parametreleri birbirinden ayırır.

sStr, iYear ve iMonth denir sabit parametreler. Sabit parametreler işlev (veya prosedür) ile değiştirilemez. IDay bir var parametresive altyordam içinde değişiklikler yapabiliriz.

İşlevler, değer döndürdüğünden, bir dönüş tipi üstbilginin sonunda ilan edildi. Bir işlevin dönüş değeri, ismine (son) atama ile verilir. Her işlevin dolaylı olarak işlev dönüş değeriyle aynı türden yerel bir değişkeni olduğu için, Sonucu atamak, işlevin adına atamakla aynı etkiye sahiptir.

Altyordamları Konumlandırma ve Arama

Altyordamlar daima ünitenin uygulama bölümüne yerleştirilir. Bu alt rutinler, bir olay işleyici veya alt rutin tarafından kendisinden sonra tanımlanan aynı birim içinde çağrılabilir (kullanılabilir).

Not: bir birimin kullanım cümlesi size hangi birimleri arayabileceğini söyler. Birim1'deki belirli bir altyordamın başka bir birimdeki olay işleyicileri veya altyordamlar tarafından kullanılabilmesini istiyorsak (örneğin Birim2):

  • Unit2'nin kullanım yan tümcesine Unit1'i ekleyin
  • Birim1'in arayüz bölümüne altyordam başlığının bir kopyasını yerleştirin.

Bu, arayüz bölümünde başlıkları verilen altprogramların küresel kapsamda.

Bir birimi (veya yordamı) kendi birimi içinde çağırdığımızda, adını parametreler ihtiyaç vardır. Diğer yandan, global bir altyordam (başka bir birimde, örneğin MyUnit'te tanımlanır) olarak adlandırırsak, birimin adını ve ardından bir nokta kullanırız.

... // SayHello prosedürü bu ünite içinde tanımlandı
SayHello ('Delphi Kullanıcısı'); // YearsOld işlevi MyUnit biriminde tanımlandı
Dummy: = Birimim. YearsOld (1973);... 

Not: işlevler veya prosedürler, içine gömülü kendi alt rutinlerine sahip olabilir. Katıştırılmış bir alt yordam, kap alt yordamı için yereldir ve programın diğer bölümleri tarafından kullanılamaz. Gibi bir şey:

prosedür TForm1.Button1Click (Gönderen: TObject); fonksiyon IsSmall (const SSTR'yi:sicim): Boolean; başla// sStr küçük harfteyse IsSmall True döndürür, aksi takdirde False
Sonuç: = LowerCase (sStr) = sStr; son; başla// IsSmall yalnızca Button1 OnClick olayının içinde kullanılabilirEğer IsSmall (Edit1.Text) sonra
ShowMessage ('Edit1.Text içindeki tüm küçük büyük harfler')
Başka
ShowMessage ('Edit1.Text içindeki tüm küçük büyük harfler değil'); son;