Delphi programozás IV.
Török Viktor (Kapitány)
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);
• • •
S egy string típusú változó, amelyben a konvertálandó szöveg található 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;
• •
S egy string típusú változó, amelyben a konvertálandó szöveg található 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.
Delphi programozás IV.
Török Viktor (Kapitány)
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;
• • •
S egy string típusú változó, amelyben a konvertálandó szöveg található 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;
• • •
S egy string típusú változó, amelyben a konvertálandó szöveg található 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.
Delphi programozás IV.
Török Viktor (Kapitány)
else Writeln('Nem egesz szamot irtal be!'); // Konvertalas: StrToInt fuggveny try szam:=SysUtils.StrToInt(s); Writeln('A szam erteke az StrToInt fuggveny szerint: ',szam); except on EConvertError do Writeln('Nem egesz szamot irtal be!'); 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 Writeln('Nem egesz szamot irtal be!'); Readln; end.
Néhány futási eredmény különböző inputokkal:
Verzió: 01
3/5
2009.03.13.
Delphi programozás IV.
Török Viktor (Kapitány)
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.
Delphi programozás IV.
Török Viktor (Kapitány)
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.