Stringovi

String je u Clipper-u proizvoljan niz simbola. Moze biti dugacak do 64K. String se piže kao niz simbola izmedju navodnika ili apostrofa:

String := "Ovo je string"
specSym := '!#%"&'
FORMATIRANJE
Tc(), Tf(), Tk() -> Formatiranje brojeva po definiciji formata
Str(n, l, d)     -> Konvertuje broj u string dužine L i sa D decimala  Str(123, 10, 2)        = "      123.00"
Val(s)           -> Konvertuje string u numeričku vrednost             Val("123")             = 123
Left(s, l)       -> Prvih L simbola stringa S                          Left("Abeceda", 3)     = "Abe"
Right(s, l)      -> Zadnjih L simbola stringa S                        Right("Abeceda", 3)    = "eda"
SubStr(s,p,l)    -> Deo stringa S od pozicije P, ducine L              SubStr("Abeceda", 3,2) = "ec"
LTrim(s)         -> String S bez vodećih blanko simbola                LTrim("   123  ")      = "123   "
RTrim(s)         -> String S bez blanko simbola na kraju               RTrim("   123  ")      = "   123"
AllTrim (s)      -> String S bez vodećih i krajnjih blanko simbola     AllTrim("   123  ")    = "123"
Trim(s)          -> String S bez blanko simbola na kraju               Trim("   123  ")       = "   123"
PadL(s, l)       -> Popunjava string S sa L blanko znakova sleva       PadL("ABC", 10)        = "     ABC"
PadR(s, l)       -> Popunjava string S sa L blanko znakova sdesna      PadR("ABC", 10)        = "ABC     "
PadC(s, l)       -> Popunjava string S sa L blanko znakova centrirano  PadC("ABC", 10)        = "   ABC  "
Pad(s, l, c)     -> Popunjava string S sa L znakova C sdesna           Pad("ABC", 10, "*")    = "ABC*****"
At (s1, s2)      -> Pozicija stringa S1 u stringu S2                   At(";", "Abce;da")     = 5
Len (s)          -> Dužina (broj simbola) stringa S                    Len("Abeceda")         = 7
Replicate(c, n)  -> Kreira string od N znakova C                       Replicate(“*”, 5)      =  "*****"
Space(n)         -> Kreira string od N blanko znakova                  Space(5)               = "     "
StrTran(s, x, y) -> Menja u stringu S sva pojavljivanja X u Y          StrTran("Abeceda", "e", "--") = "Ab--c--da"

GetV(@cString, cDelimiter) -> Učitavanje stringa do delimitera. Pri tom se menja i originalni string.
c := "Ovo je primer"
x := GetV (@c, " ")  // "Ovo"
? c                  // "je primer"

Za stringove su najvažniji operatori spajanja (konkatenacije). Operator + oznacava normalno spajanje, a - spajanje bez blanko simbola na kraju prvog operanda. Na primer:

x := "ABC "
y := "DE"
s1 := x + y    // s1 == "ABC DE"
s2 := x - y    // s2 == "ABCDE"

Za stringove je vezan jedan važan relacioni operator: $ (podstring). Pomoću njega se ispituje da li je string sadrzan u nekom drugom:

"ABC" $ "ABCDEF"   --> TACNO
"aBC" $ "ABCD"     --> NETACNO
"%"   $ "x % y"    --> TACNO

Veza izmedju celih brojeva i stringova je uobicajena funkcija Chr() konvertuje dati ceo broj u odgovarajući simbol po ASCII tabeli, a Asc() konvertuje prvi simbol u stringu u kod po ASCII tabeli

TRANSFORM

Postoji joŠ jedna veoma vaŽna funkcija koja omoguĆava formatiranje podataka proizvoljnog tipa: funkcija Transform().

Ova funkcija podatak iz bilo kog tipa pretvara u string, sliČno kao Što funkcija Str() pretvara brojeve u stringove. Medjutim, Transform ima daleko veće mogućnosti. Prvo, prihvata i ostale tipove podataka, a ne samo brojeve; drugo, omogućava daleko precizniju kontrolu onoga žto se dobija kao rezultat.

Transform funkcija se kontroliše na dva načina: preko stringova za formatiranje i funkcija za formatiranje. Stringovi za formatiranje služe za operacije nad simbolima ulazne vrednosti. String za formatiranje je, u stvari, niz simbola od kojih neki imaju specijalno značenje. Na primer, simbol “9” u format stringu označava cifru. Ulaz se “uparuje” sa format stringom i na osnovu toga se pravi izlaz. Na primer:

? Transform (12345, "999,999")   -> "12,345"

Clipper podržava još specijalnih simbola:

A,N,X,9,# -    Označava jedan simbol ulaznog podatka. Rezultat zavisi od tipa ulazne vrednosti
L         -    Prikazuje logički podatak kao T ili F
Y         -    Prikazuje logički podatak kao Y ili N
!         -    Konvertuje slovo u odgovarajuće veliko
$         -    Prikazuje $ umesto vodećih nula u broju
*         -    Prikazuje * umesto vodećih nula u broju
.         -    Određuje decimalnu tačku
,         -    Zarez

Evo nekih primera upotrebe prethodnih specijalnih simbola:

Transform(1234.56, "999,999.-")  ->  12,34.-
Transform(1234, "$$$$$$")        ->   $$1234
Transform(1234, "***/***")       ->  **1/234
Transform(-1234, "######")       ->    -1234
Transform("abcdef", "A=A=A")     ->    a=c=e

Kao što se vidi u poslednjem primeru, kada se formatira string, simbol u formatu koji nije specijalan jednostavno “prekrije” odgovarajući ulazni simbol.

Drugi način formatiranja je preko funkcija za formatiranje. Funkcije za formatiranje deluju na celu ulaznu vrednost, a ne pojedinačno na simbole. Zadaje se takođe u okviru stringa za formatiranje, samo što se pre kodova funkcija nalazi simbol @.

Na primer, da bi se sva slova u ulaznom stringu konvertovala u velika, zadaje se sledeća naredba:

? Transform("abcdef", "@!")

Funkcija Transform raspoznaje sledeće kodove - oznake funkcija za formatiranje:

B         -    Broj poravnava u levo
C         -    Prikazuje CR posle pozitivnog broja
D         -    Prikazuje datum u tekućem formatu
E         -    Prikazuje datum u evropskom formatu; kod brojeva zamenjuje tačku i zarez kao delimitere (brojevi se prikazuju u formatu 999.999,99)
R         -    Simboli bez značenja u stringu za formatiranje ne brišu ulazne, već se ubacuju izmedju
X         -    Prikazuje DB posle negativnog broja
Z         -    Prikazuje nule kao blanko simbole
(         -    Zatvara negativne brojeve u zagrade
)         -    Zatvara negativne brojeve u zagrade bez vodećih blanko simbola
!         -    Sva slova konvertuje u velika

Posle oznake za format funkciju (@), mogu se odjednom navesti i više kodova za funkcije. Na primer, string ”@BC” označava da broj treba poravnati u levo i da na kraju treba ispisati CR ako je broj pozitivan. Ponekad je potrebno kombinovati funkcije i simbole za formatiranje i tada treba prvo pisati funkcije, a onda simbole, posle jednog blanko simbola. Na primer

Transform (cResult, "@! AA-AAA/AAA")

Pri tome treba imati na umu da funkcije za formatiranje imaju prednost nad simbolima.