15. fejezet: A projekt felépítése

A projekt fájljai

Vessünk egy pillantást a projektünket tartalmazó mappára! A konzolalkalmazásoknál több fájlt láthatunk. Ha a projektünket pl. elso néven mentettük, akkor az elso.lpi a projekt információs fájl, mely XML formátumban tartalmazza, milyen fájlok tartoznak a projekthez, és azokat milyen szabályok szerint kell lefordítani.

A főprogram továbbra is az elso.lpr fájl. Ha ennek megnézzük a tartalmát, láthatjuk, hogy nem ezen a fájlon dolgoztunk a forrásszerkesztőben. Alkalmazás típusú projektben az .lpr fájl szerepe csak annyi, hogy létrehozza az általunk megszerkesztett formot (vagy formokat) , és elindítsa a fő eseménykezelő ciklust.
  Application.Initialize;
  Application.CreateForm(TForm1, Form1);
  Application.Run;

Az egyes formokhoz tartotó kód .pas fájlokban van, az első projektünknél ez a unit1.pas lesz (mivel a projektünk csak egy formból áll). Figyeljük meg, hogy a .lpr fájl elején szerepel egy uses..., Unit1 deklaráció!

A unit1.pas fájl ismerős a forrásszerkesztőből. Figyeljük meg, hogy az elején nem program ..., hanem unit ... deklaráció szerepel, lévén ez egy unit, programmodul.

Hol vannak azok a kiindulási adatok, melyeket a formszerkesztőben és az objektumfelügyelőben adtunk meg, és a program indulásakor az objektumaink tulajdonságainak kezdőértékét adják? Ezek az értékek a unit1.lfm fájlba kerültek. Ha megézzük a unit1.pas-t, láthatunk benne egy {$R *.lfm} úgynevezett fordítási direktívát. Ez arra utasítja a fordítót, hogy a unit fordítsa közben a megadott fájlt is vegye figyelembe.

A mappában találunk még egy elso.ico-t, ez a projektünk ikonja. Az alapértelmezett ikon helyett készíthetünk másikat. Az elso.res bináris formában erőforrásokat tartalmaz, ilyenek lehetnek (az ikonon kívül) hangok, képek, melyeket hozzáfordíthatunk a programunk kódjához. Ezt az .lpr fájlban "húzza be" egy {$R *.res} fordítási direktíva. A másik lehetőség, hogy a programunk futás közben külső fájlból olvassa be ezeket az adatokat.

Fordításkor további fájlok keletkeznek egy lib alkönyvtárban, ezek a különböző komponensek lefordított változatai.

A unit felépítése

A programunk kódját többnyire a unit1.pas fájlba írjuk, ismerkedjünk meg ennek szerkezetével! A Lazarus sok mindent automatikusan létrehoz a kódban, de ha később ezen módosítani akarunk, tudnunk kell, mi hová való.

unit Unit1;

Ez jelzi a fordítónak, hogy unitról, vagyis programmodulról van szó. A unit neve megegyezik a forrásfájl nevével, tehát ne írd át, bízd a fordítóra a kezelését!

interface

Az interface szekció azokat az adatokat tartalmazza, melyeket a unitot használó Pascal program (amely tehát betölti a unitot a Uses segítségével) elérhet. Ezek a kívülről látható eljárások fejlécei, illetve olyan változók, konstansok, objektumok stb., melyeket a unitot betöltő program rendelkezésére kívánunk bocsátani.
Az interface részben az eljárások fejléce szerepel, majd az implementation részben megismételjük a fejlécet, de már az eljárás törzsét is megírjuk. Az ilyen típusú "előre" deklarálást forward deklarációnak nevezzük.
Az interface részben látható egy uses, ez a unit által betöltött további unitok listája. Ezt a listát az IDE készítette, ezek a unitok szükségesek pl. a form elkészítéséhez is. Ha azonban nem csak a grafikus eszközökkel rakjuk össze a programunkat, a listát esetleg bővítenünk kell.
Ezután következik egy type, ahol a TForm1 objektumtípus (osztály, vagyis class) megadása történik. A private és public szekciókkal nem foglalkozunk, mindent az alapértelmezett helyre vagy a public szekcióba írunk.
Végül a var deklarálja a Form1 objektumot.

implementation

Itt következik az interface részben megadott forward deklarációk kifejtése, vagyis az eljárások törzsének megadása. Továbbá itt helyezkedik el minden olyan változó és eljárás, amely a unitunk "magánügye", az őt betöltő program elől rejtett.



Comments