Változó típus kikövetkeztetéssel lehet lokális változókat deklarálni úgy hogy nem adjuk meg a típust, de ez csak akkor használható ha a változó típusa meghatározható a kontextusból. Például:
Ez megegyezik ezzel:
A típus kikövetkeztetést lehet alkalmazni alap típusokra nem csak osztályokra. Például:
Ilyenkor a lehető legszűkebb típus lesz a változó típusa, például: integer nem longint. Csak a lokális és az inline változóknál lehet használni a típus kikövetkeztetést.
Név | Méret | Előjel | Tartomány |
---|---|---|---|
ShortInt | 1 bájt | előjeles | -128...127 |
SmallInt | 2 bájt | előjeles | -32768...32767 |
Integer | 4 bájt | előjeles | -2147483648...2147483647 |
LongInt | 4 bájt | előjeles | -2147483648...2147483647 |
Int64 | 8 bájt | előjeles | -9223372036854775808 .. 9223372036854775807 |
Byte | 1 bájt | előjel nélküli | 0...255 |
Word | 2 bájt | előjel nélküli | 0...65535 |
LongWord, Cardinal | 4 bájt | előjel nélküli | 0..4294967295 |
Név | Méret | Tartomány |
---|---|---|
Single | 4 bájt | -1.5E-45...3.4E38 |
Real, Double, Extend | 8 bájt | -5.0E-324...1.7E308 |
Név | Méret | Tartomány |
---|---|---|
WideChar, Char | 2 bájt | Unicode |
Megegyezik a .NET System.Strings osztályával
Név | Méret | Tartomány |
---|---|---|
Boolean | 1 bájt | 0, 1, False, True |
A mutató típus olyan változót határoz meg, amely egy adott memóriaterületre mutat. Pl.: x: ^Integer;
A @ operátor segítségével bármely objektum (függvény, változó, stb.) címét lekérdezhetjük. Például:
Minden változónak vagy egy alapértelemzett értéke, amire inicializálódik, ha nem adtunk neki értéket. Azonban a nullable kulcsszó használatával elérhetjük, hogy az értéket ne az alapértékre inicializálja hanem nil-re. Például:
Ennek a típusnak az előnye, hogy könnyen ellenőrízni tudjuk, hogy egy változó kapott-e már értéket. Pl.:
A nyelvben lehetőségünk van névtelen osztályokat deklarálni egy metodus törzsében. Például:
Ezek olyan típusok amelyek figyelembe veszik másik típusok tagjait (általában osztályokét vagy rekordokét). A "nasted in" kulcsszóval kell definiálni és utána kell írni a szülő típust. Például:
A "delegate" kulcsszóval saját esemény típusokat hozhatunk létre. Például:
Az enum vagy a flag kulcsszó és a felsorolás neve után kapcsos zárójelben soroljuk fel az értékeket. A flags abban különbözik az enum-tól, hogy a felsorolási típus értékei nem 0,1,2... lesz hanem a kettes számrendszer számait kapják értékül 1,2,4,8,16... Például:
A név után opcionálisan megadható a felsorolás típusa (pl: hogy kisebb helyet foglaljon). Illetve az egyes elemekhez rendelt érték.
A halmaz típus bír annak a szokásos műveleteivel: in(tartalmazás), +(unió), -(differencia), *(metszet), illetve lehet halmazok egyenlőségét lekérdezni(=), és van halmazok közti <=, >=, <>(nem egyenlő) műveletek. A halmaz értékeinek 0-nál nagyobbnak kell lennie! Egy halmazban tárolt elem maximális értéke 0x100000 lehet (azaz 128 kbit-nél nem foglalhat többet egy érték a memóriából). Példa:
A tömb inicializálódik, ha eleget tesz a következő 3 szabálynak:
Dinamikus (unbound) tömbök. Példa:
Kötött (bound) tömbök. Példa:
Inline tömb konstans: tömbök megadása elemei felsorolásával. Példa:
Statikus tömbök: ez referencia típusú. Példa:
Nem csak váltózók gyűjteménye mint object pascalban hanem lehetnek benne eljárások is. Az osztályokhoz hasonlóan a rekordok változóinak és metódusainak is lehet megadni láthatóságot (alapértelmezésben: assembly). Szintén az osztályokhoz hasonló tulajdonsága, hogy egy vagy több interfészt is megvalósíthat Például:
Viselkedését és lehetőségeit tekintve megfelel a Java és a C# megközelítésének. Részletesebben erről az Objektum-elvű programozás fejezetben lesz szó. Az osztály referencia típus, melynek adattagok, konstruktorok, destruktorok, metódusok, konstansok, propertik, operátorok, indexerek, osztály adattagok lehetnek a deklarációs részében.