Mivel a Delphi-ben nincs olyan szám típus, amely ekkora számokat tárolni tudna, ezért a számokat és az eredményt is sztringként adjuk meg. A műveletekhez szükséges függvények a LargeMath unit-ban találhatók.

ValidNumber
Osztály:
function ValidNumber(
Value: string
): string;
Ez a függvény a paraméterként megadott sztringet ellenőrzi és törli belőle a felesleges karaktereket. A kapott eredmény egy érvényes számot tartalmazó sztring lesz. Ez a szám sztring a számokon, és az opcionális „-” karakteren kívül semmilyen más karaktert nem tartalmazhat. A „-” jelzi, hogy a szám negatív, ennek kell lennie az első karakternek.
Paraméterek
Value: string
Az ellenőrizni kívánt számot tartalmazó sztring.
Visszatérési érték
A módosított sztring. Ha a paraméter sztring nem tartalmazott érvényes karaktereket, akkor a visszatérési érték „0”.

Negative
Osztály:
function Negative(
Value: string
): boolean;
Ez a függvény ellenőrzi, hogy a paraméterként megadott szám (sztring) negatív-e.
Paraméterek
Value: string
A számot tartalmazó sztring.
Visszatérési érték
Ha a sztring első karaktere „-”, akkor a visszatérési érték igaz, ellenkező esetben hamis. A függvény az ellenőrzés előtt meghívja a ValidNumber függvényt.

LargeSummary
Osztály:
function LargeSummary(
Value1,
Value2: string
): string;
Ez a függvény adja össze a két számot. Természetesen, ha pozitív számhoz negatívot adunk hozzá, akkor kivonás történik. Mivel egyszerre csak két számot összegzünk, így csak négy lehetséges eset van:
|
Érték1 |
Érték2 |
| 1. |
pozitív |
pozitív |
| 2. |
pozitív |
negatív |
| 3. |
negatív |
pozitív |
| 4. |
negatív |
negatív |
Azt, hogy melyik esetről van szó, egy egyszerű művelettel megtudhatjuk:
st:=STYPE[Negative(Value1), Negative(Value2)];
Az st változó fogja tartalmazni az eset sorszámát, amit az STYPE konstans tömbből vesz. A tömb mindkét indexe logikai típusú. Miután eldöntöttük, hogy melyik esetről van szó, töröljük a negatív számok előjelét, mivel ezekre már nem lesz szükség.
Az első és az utolsó eset a legegyszerűbb, mert mindkét esetben összeadást kell végeznünk, csak az eredmény előjele változik úgy, hogy az első esetben pozitív, a másodikban pedig negatív lesz. A második és harmadik eset egy kicsit bonyolultabb. Ezeknél az eseteknél, ha az Érték2 abszolút értéke nagyobb, mint az Érték1, akkor felcseréljük a két értéket. Ha cseréltünk, akkor a ch változó értékét igazra állítjuk, ellenkező esetben pedig hamisra. Mindkét esetben kivonást fogunk végezni, a számok eredeti előjelétől függetlenül, és a végeredmény előjelét a ch változó értéke határozza meg az SSIGN konstans tömbből vett érték alapján. Ez egy kétdimenziós tömb, amelynek első indexe az eset sorszáma, a második pedig egy logikai érték, amit a ch változó értéke szolgáltat. Az 1. és 4. esetben a ch változó értéke mindig hamis, az előjel attól függ, hogy két negatív, vagy két pozitív számot adtunk-e össze. A 2. esetben az eredmény akkor lesz negatív, ha az Érték1 kisebb volt, mint az Érték2, vagyis a ch változó értéke igaz. A 3. esetben pont fordított a helyzet, ott akkor lesz negatív az eredmény, ha a két értéket nem kellett felcserélni, vagyis a ch változó értéke hamis.
Az összeadás és kivonás műveleteket ugyanúgy végezzük el, ahogyan „kézzel” is végeznénk papíron. A co változóban tároljuk a maradékot, aminek értéke max 1 lehet, hiszen csak két számot adunk össze, vagy vonunk ki egymásból.
Paraméterek
Value1: string
Az első szám sztringként megadva (Érték1).
Value2: string
A második szám szintén sztringként megadva (Érték2).
Visszatérési érték
Az összeadás eredménye.