Iako poglavlje nosi naslov 'Funkcije', a u poglavlju 'Procedure' je već bilo govora o jedinicama, ipak je ovo pravi trenutak da se dublje pozabavimo njima.
     Naime, ako opet pogledamo kako to izgleda jedan Unit,  primjećujemo rezervisanu ( podebljanu ) riječ uses. Nakon nje slijedi spisak svih jedinica koje koristi vaš projekt. To su posebne jedinice koje nemaju svoj prozor, već samo sadržavaju određene funkcije. Tako, recimo, Math unit sadrži mnoge matematičke funkcije, neke i vrlo važne, kojih nema u Delphiju. Uzmimo primjer funkcije
  Power(Base: Extended; Exponent: Extended): Extended.
Ova funkcija izračunava xy. Recimo da želimo izračunati 733 i tu vrijednost dodijeliti promjenljivoj a, pa pišemo:
  a := Power(7, 33);
Primjećujemo da je kao baza uneseno 7, a kao eksponent 33. Sve u svemu vrlo jednostavno.

     Međutim, da smo htjeli sami da definišemo takvu funkciju morali bismo raditi sljedeće:

1. Kliknimo na Unit i izaberimo mjesto ispod riječi private. Tu upišimo:
  function Stepenovanje(Baza: Integer, Eksponent: Integer): Integer;
2. Zatim ispod riječi
  implementation
 
{$R *.DFM}
pišemo:
  function TForm1.Stepenovanje(Baza: Integer, Eksponent: Integer): Integer;
  var
    i, t: Integer;
  begin
    t := 1;
    if i <> 0 then
      for i := 1 to Eksponent do
        t := t * Baza;
    Stepenovanje := t;
  end;

     Dakle, funkcije se definišu tako što se nakon imena u zagradu upisuju promjenljive koje definiše korisnik, a nakon zagrade tip koji funkcija vraća. U gornjem primjeru to je Integer, najčešći tip brojevnih promjenljivih.
     Ovako se piše funkcija za jednokratnu upotrebu. Ali ako želimo da napišemo jednu ili više funkcija koje možemo koristiti u svim projektima, definišemo funkcije kao public, a unit čuvamo kao poseban, bez prozora. U projektima u kojima želimo da upotrebimo taj unit, u gore pominjanu listu uses dodajemo i ime tog unita ( ako je sačuvan pod imenom MyUnit, pišemo upravo MyUnit ). Isto važi i za jedinice koje nisu već navedene ( Delphi smatra samo određene jedinice za default i kao takve ih ispisuje automatski, ali onih koje ne spadaju u takve ima puno više. One dolaze sa Delphijem. Takve su recimo Math, Chart, Db... ).

     Očigledno je da su funkcije veoma slične procedurama. Ustvari, jedina razlika je što funkcije daju neku povratnu vrijednost, a procedure samo obavljaju određene radnje, te se može reći da su funkcije proširene procedure.

JEDNA VRLO VAŽNA PROCEDURA:
     FormIme.Show;               ( FormIme je ime prozora koji želimo otvoriti )
    Ova procedura je specifična po tome što se u jedinicu prozora iz kojeg želimo otvoriti prozor treba unijeti sljedeći kod:
     uses UnitIme;           ( UnitIme je ime jedinice prozora koji želimo otvoriti )
Međutim, za razliku od gore pominjanih jedinica, ovaj kod se unosi, kao i procedure i funkcije, između rezervisane riječi implementation i {$R *.DFM}.