![]() |
![]() |
| |||||
Fejezet 3A StarOffice Basic futásidejű programkönyvtáraA következő részekben a futásidejű programkönyvtár főbb függvényeiről olvashatunk. Konverziós függvényekSokszor előfordul olyan helyzet, hogy az egyik típusú változót át kell alakítani egy másik típusúvá. Implicit és explicit típuskonverzióAz egyik változó másik típusúvá alakításának legegyszerűbb módja, a hozzárendelés.
Ebben a példában az A változó egy karakterlánc, a B változó egész szám. A StarOffice Basic a B változót átalakítja karakterlánccá, amikor hozzárendeli az értékét az A változóhoz. Ez az átalakítás sokkal bonyolultabb, mint amilyennek látszik: a B egész szám megmarad a memóriában egy kétbájtos számként. Viszont az A egy karakterlánc, így a számítógép minden karakterét (minden számát) egy vagy két bájton tárolja. Ezért, mielőtt a B változót az A változóba lehetne másolni, a B változót konvertálni kell az A változó belső formátumára. A legtöbb programozási nyelvtől eltérően a Basic a típuskonverziót automatikusan elvégzi. Viszont ennek végzetes következményei lehetnek. Ha jobban megvizsgáljuk a következő kódot,
amely az első pillantásra egyértelműnek tűnik, végül egy csapdának bizonyul. A Basic-értelmező először kiszámítja az összeadás eredményét, majd ezt konvertálja karakterlánccá, ami így a 2 karakterláncot adja eredményül. Viszont, ha a Basic-értelmező először konvertálja a B és a C változót karakterlánccá, és utána hajtja végre a pluszjel-operátort, akkor az eredmény a 11 karakterlánc lesz. Ugyanez vonatkozik a variant típusú változókra is:
Mivel a variant típusú változók számokat és karakterláncokat is tartalmazhatnak, nem lehet tudni, hogy az A változóhoz a 2-es számot vagy a 11 karakterláncot kell hozzárendelni. Az implicit típuskonverziók miatt bekövetkező hibák csak a gondos programozással küszöbölhetők ki, például, ha nem használunk varint típust. Az implicit típuskonverziók miatt bekövetkező egyéb hibák elkerülésére a StarOffice Basic számos típuskonverziós függvényt kínál, amelyekkel megadhatjuk, mikor kell konvertálni egy művelet adattípusait:
Ezekkel a konvertáló függvényekkel megadhatjuk, hogyan hajtsa végre aStarOffice Basic a típuskonverziós műveleteket:
A példában, az első összeadásnál a StarOffice Basic először összeadja a két egész számot, majd karakterlánccá konvertálja az eredményt. A program az A változóhoz hozzárendeli a 2 karakterláncot. A második változatnál a program először konvertálja az egész számokat karakterláncokká, majd ezeket összevonja az értékadásnál. Így az A változóhoz hozzárendeli a 11 karakterláncot. A CSng és a CDbl numerikus konvertáló függvények tizedes törteket is elfogadnak paraméterként. Tizedesjelként az adott területi beállítás szerinti jelet kell használni. És ennek megfelelően a CStr metódusok is az aktuális területi beállítást használják számok, dátumok és idők formázásánál. A Val függvény különbözik a Csng, Cdbl és Cstr metódustól. Karakterláncot konvertál számmá, de tizedesjelként mindig pontot vár.
| |||||
| |||||