HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

String konverziók és függvények


A SysUtils Str függvényei 1. rész

Példaprogram letöltése

4842 bájt

Egy kétrészes sorozat keretén belül megismerkedünk a SysUtils Str-rel kezdődő függvényeivel. Az első részben azokat a függvényeket vizsgáljuk meg, amelyek egy String tartalmát egész szám, tört szám, dátum vagy más formátumokba konvertálják. Megnézzük, hogy hogyan lehet egy szöveget gyorsan kis-, vagy nagybetűssé alakítani, esetleg megfordítani.

A SysUtils unit függvényeinek többsége nem String típusú paramétereket használ, hanem PChar-t. A két típus közti konverzió könnyedén megvalósítható.
String-ből PChar:
p:=PChar(s);
PChar-ból String:
s:=StrPas(p);
A mellékelt példaprogramban minden egyes bemutatott függvényhez található gyakorlati példa, az alábbiakban csak a függvények deklarációját mutatjuk be.
Először tekintsük át azokat a függvényeket, amelyek egy String tartalmát különböző más formátumokba konvertálják.
String-ből Float típust, azaz tört számot, az StrToFloat függvénnyel állíthatunk elő.
function StrToFloat(const S: string): Extended;
Ha a String tartalma nem konvertálható át, akkor a program hibaüzenetet ad. A függvény fordított művelete a FloatToStr.
Currency típust az StrToCurr függvénnyel hozhatunk létre.
function StrToCurr(const S: string): Currency;
A függvény meghívásánál nekünk kell ügyelnünk arra, hogy az S String megfelelő formátumú értéket tartalmazzon. Ha ez nem történik meg, akkor a program hibaüzenetet ad. Az StrToCurr ellentétes művelete a CurrToStr.
Egész számok esetében két lehetőségünk van. A String tartalmát Integer és Int64 típusokba konvertálhatjuk.
function StrToInt(const S: string): Integer;
function StrToInt64(const S: string): Int64;
Ezeknél a függvényeknél is nekünk kell gondoskodnunk az S String megfelelő formátumú tartalmáról. Az ellentétes művelet mindkét esetben az IntToStr.
Egész számok esetében használhatunk két sokkal rugalmasabb függvényt is.
function StrToIntDef(const S: string; Default: Integer): Integer;
function StrToInt64Def(const S: string; Default: Int64): Int64;
Ezek a függvények ugyanazt a konverziót hajtják végre, mint az StrToInt és StrToInt64. Azonban abban az esetben, amikor a konvertálás nem hajtható végre, nem adnak hibaüzenetet. Helyette a Default paraméterben megadott értéket adják visszatérési értékként.
String-ből dátumot az StrToDate függvénnyel készíthetünk.
function StrToDate(const S: string): TDateTime;
Ahhoz, hogy a konvertálás végrehajtható legyen, az S String-nek megfelelő dátumformátummal kell rendelkezni, vagy különben a program hibaüzenetet ad. A megfelelő formátumot az operációs rendszer beállítása írja elő. Ez magyar nyelvű operációs rendszerek esetében általában a következő: pl. 2003.01.01. A dátum végéről a pont el is hagyható. A konvertálás ellentétes művelete a DateToStr.
Az StrToDate-hez hasonlóan, az StrToTime függvény hivatott a String – idő konverziót megvalósítani.
function StrToTime(const S: string): TDateTime;
Itt is ügyelnünk kell a megfelelő formátumra, amit az operációs rendszer határoz meg. Pl. 12:36:00, azaz óra / perc / másodperc. A másodperc elhagyható, az éjfél pedig nem 24:00, hanem 00:00. Az ellentétes művelet a TimeToStr.
A dátum és idő egyidejű használatakor a konvertálás az StrToDateTime függvénnyel történhet. Helyes formátum például a következő: 2003.01.01. 12:36:00. Ellentétes művelete a DateTimeToStr.
Most vizsgáljunk meg néhány olyan függvényt, amellyel egy String-ről adatokat kérdezhetünk le, vagy módosíthatjuk tartalmukat.
Egy String hosszát az StrLen függvénnyel kérdezhetjük le.
function StrLen(const Str: PChar): Cardinal;
A függvény a karakterek számát adja vissza eredményül.
Az StrLower és StrUpper függvények segítségével a teljes String-et, csupa kis-, illetve nagybetűssé alakíthatjuk át.
function StrLower(Str: PChar): PChar;
function StrUpper(Str: PChar): PChar;
A PChar típusú String-ek végét a memóriában egy Null karakter zárja le. Az StrEnd függvénnyel egy olyan PChar-t kérhetünk le, amely erre a karakterre mutat.
function StrEnd(const Str: PChar): PChar;
Ezt nagyon jól tudjuk alkalmazni, mondjuk egy String megfordításakor. Erre mutat egy példát az alábbi algoritmus.
TextBuffer:=PChar(S1.Text);
Ptr:=StrEnd(TextBuffer);
while Ptr>=TextBuffer do
begin
  Ptr:=Ptr-1;
  S2.Text:=S2.Text+Ptr^;
end;
A Ptr és TextBuffer, PChar típusú változók, az S1 és S2 pedig TEdit típusú objektumok. Az algoritmus az S1 Text mezőjének tartalmát átmásolja S2-be, megfordítva.
Az StrNew függvény memóriaterületet foglal le a Heap-ben egy PChar számára, úgy, hogy azt közben feltölti, a paraméterben megadott szintén PChar típusú változó tartalmával.
function StrNew(const Str: PChar): PChar;
Ezt a lefoglalt területet az StrDispose eljárással szabadíthatjuk fel.
procedure StrDispose(Str: PChar);
Egy PChar bufferének méretét az StrBufSize függvénnyel kérdezhetjük le. Ez meghatározza azt a maximális karakterszámot, amit az adott PChar tárolni képes.
function StrBufSize(const Str: PChar): Cardinal;

Cikksorozat

#IDKategóriaCikk címeSorozat
1621DelphiMySQL szerverek elérése Delphi-ből1. rész
1632DelphiMySQL szerverek elérése Delphi-ből2. rész
1641DelphiMySQL szerverek elérése Delphi-ből3. rész
1649DelphiMySQL szerverek elérése Delphi-ből4. rész


Könyv
Ez a cikk megtalálható ebben a könyvben: Delphi Software Offline 2003 évkönyv 33. oldal

Felhasználási feltételek
A Software Online szoftverfejlesztői magazin mindegyik cikke, minden megjelent képe, és egyéb publikált anyaga szerzői jog védelme alatt áll! Bármilyen formában történő másodlagos terjesztésük, közzétételük vagy felhasználásuk kizárólag a kiadó előzetes írásbeli engedélyével történhet!

Copyright © 1999-2012 Animare Software Kft. Minden jog fenntartva!
| Készült: Animare Stúdió | Adatvédelem | Kapcsolat |