Delphi programozás IV. Szöveg konvertálása egész számmá A Turbo Delphi többféle lehetőséget biztosít arra, hogy egy szöveges változó tartalmát egész számmá konvertáljunk. A konvertálandó szövegnek egy helyes decimális (tízes számrendszerbeli) vagy hexadecimális (tizenhatos számrendszerbeli) számot kell tartalmaznia, különben - az alkalmazott módszertől függően - hibát kapunk, és sikertelen lesz a konverzió. Ha egy hexadecimális számot tartalmazó szöveget szeretnénk megadni, akkor (tapasztalataim szerint) az alábbi formákat fogadja el a Turbo Delphi (vegyük például az a0 hexadecimális számot, amelynek értéke decimálisan 160): $a0 vagy $A0 xa0 vagy xa0 0xa0 vagy 0xA0 Xa0 vagy XA0 0Xa0 vagy 0XA0 A konvertálásra használható függvények Val: A Val eljárás egy stringet konvertál számmá. A Val eljárás már a Turbo Pascalban is használható volt. procedure Val(S : String; var V : Type; var Code : Integer); V egy egész vagy valós szám típusú változó, amelyben az eredményt kapjuk meg Code egy integer típusú változó; ha sikeres volt a konverzió, akkor a tartalma 0 StrToInt: Az StrToInt függvény egy stringet konvertál egész számmá. function StrToInt(const S : String) : Integer; a függvény visszatérési értéke a szövegnek megfelelő szám Ha az S nem egy helyes (decimális vagy hexadecimális) egész számot tartalmaz, akkor a függvény egy EConvertError kivételt vált ki. Verzió: 01 1/5 2009.03.13.
StrToIntDef: Az StrToIntDef függvény egy stringet konvertál egész számmá. Ha sikertelen a művelet, akkor egy paraméterként megadott alapértelmezett értéket ad vissza. function StrToIntDef(const S : String; Default : Integer) : Integer; Default egy integer típusú változó, amelyben a hiba esetén visszaadandó alapértelmezett érték található a függvény visszatérési értéke a szövegnek megfelelő szám vagy hiba esetén a Default paraméter értéke TryStrToInt: A TryStrToInt függvény egy stringet konvertál egész számmá, és a művelet sikerességét a visszatérési értékkel jelzi. function TryStrToInt(const S : String; out Value : Integer) : Boolean; Value egy integer típusú (out) változó, amelyben az eredmény található a függvény visszatérési értéke true, ha sikeres volt a művelet, egyébként false Példaprogram a szöveg - egész konverzió szemléltetésére A következő program az előzőekben ismertetett függvények alkalmazására mutat példát. program SzamKonvertalas; {$APPTYPE CONSOLE} uses SysUtils; var s : string; szam : integer; code : integer; begin // String konvertalasa szamma // Szam bekerese Write('Irj be egy szamot: '); Readln(s); // Konvertalas: Val eljaras System.Val(s,szam,code); if (code = 0) then Writeln('A szam erteke a Val eljaras szerint: ',szam) Verzió: 01 2/5 2009.03.13.
else // Konvertalas: StrToInt fuggveny try szam:=sysutils.strtoint(s); Writeln('A szam erteke az StrToInt fuggveny szerint: ',szam); except on EConvertError do end; // Konvertalas: StrToIntDef fuggveny szam:=sysutils.strtointdef(s,-1); Writeln('A szam erteke az StrToIntDef fuggveny szerint: ',szam); // Konvertalas: TryStrToInt fuggveny if (SysUtils.TryStrToInt(s,szam)) then Writeln('A szam erteke a TryStrToInt fuggveny szerint: ',szam) else Readln; end. Néhány futási eredmény különböző inputokkal: Verzió: 01 3/5 2009.03.13.
Egész szám átalakítása hexadecimális formába Az IntToHex függvény egy egész szám hexadecimális formáját adja vissza. function IntToHex(Value : Integer; Digits : Integer) : String; Value egy integer típusú változó, amely a konvertálandó számot tartalmazza Digits egy integer típusú változó, amely azt adja meg, hogy legalább hány jegyet tartalmazzon a visszaadott szöveg a függvény visszatérési értéke a szám hexadecimális reprezentációját tartalmazza Példaprogram az egész - hexadecimális konverzió szemléltetésére program IntToHexPelda; {$APPTYPE CONSOLE} uses SysUtils; var i : integer; begin for i:=1 to 15 do Writeln(i:2,' = $',SysUtils.IntToHex(i,2)); Readln; end. A program futási eredménye: Verzió: 01 4/5 2009.03.13.
Irodalom Developer Studio 2006 Reference, Delphi Language Guide Borland Software Corporation, 2005 Dr. Tamás Péter - Tóth Bertalan - Benkő Tiborné - Kuzmina Jekatyerina Programozzunk Delphi 5 rendszerben! ComputerBooks, Budapest, 2002 Verzió: 01 5/5 2009.03.13.