Tipul  (clasa)  AnsiString

 

Spre deosebire de Pascal, in C++ lucrul cu siruri de caractere este destul de greoi.Din acest motiv, in Builder exista un tip nou, numit AnsiString. O variabila de acest tip poate retine un sir de caractere.De asemenea, exista o multime de functii cu ajutorul carora lucrul cu siruri de caratere devine deosebit de usor.

 

Pentru cei care au studiat OOP, putem spune ca AnsiString este de fapt o clasa, cu o multime de metode, de tip constructor sau nu, functii prieten, care , uneori, sunt rezultate prin supraincarcarea operatorilor (vezi concatenarea sirurilor, unde se utilizeaza operatorul +).

 

O variabila de tip AnsiString se declara asa cum se vede mai jos.De asemenea, se poate observa cum unei astfel de variabile i se atribuie uin sir de caratere , dupa care poate fi afisata cu ShowMessage ( ).

 

AnsiString S;

S=”Un sir”;

ShowMessage ( S );

 

O variabila de tip AnsiString poate fi initializata de la declaratie:

 

AnsiString S=”Un sir”;

ShowMessage (S);

 

 O variabila de tip AnsiString poate fi initializata de la declaratie si asa:

 

AnsiString S(„Un sir”);

ShowMessage (S);

 

 Doua astfel de variabile pot fi concatenate cu ajutorul operatorului +. In acest fel se obtine un sir de caractere format din primul sir (continutul lui S) la care se adauga al doilea sir (continutul lui T);

 

AnsiString S=”Un sir”,T=”alt sir”;

S=S+T;

ShowMessage(S);

 

Operatia de concatenare nu este comutativa!

 

Functia IntToStr are rolul de a converti o valoare intreaga in sir de caractere.

AnsiString IntToStr (int);

 

 In secventa urmatoare, sirul obtinut dupa conversie este atribuit unei variabile de tip AnsiString, dupa care este afisat:

 

AnsiString S;

int n=17;

S=IntToStr (n);

ShowMessage (S);

 

Functia FloatToStr are rolu de a converti o valoare reala in sir de caractere.

AnsiString FloatToStr (float);

 

In secventa urmatoare, sirul obtinut dupa conversia este atribuit unei variabile de tip AnsiString , dupa care este afisat:

 

AnsiString S;

float x= -17.65;

S=FloatToStr (x);

ShowMessage (S);

 

Functia StrToInt are rolul de a converti un sir de caractere catre o valoare intreaga.

int StrToInt (AnsiString);

 

In secventa urmatoare, se convertesc catre valori intregi doua siruri, se face suma lor, iar rezultatul este convertit catre sir, pentru afi afisat:

 

AnsiString S=”-17”,T=”22”;

Int x=StrToInt (S)+StrToInt (T);

ShowMessage (IntToStr (x));

 

Functia StrToFloat are rolul de a converti un sir de caractere catre o valoare reala.

float StrToFloat (AnsiString);

 

In secventa urmatoare, se convertesc catre valori reale doua siruri, se face suma lor, iar rezultatul este convertit catre sir, pentru a fi afisat:

 

AnsiString S=”17.5”,T=”22”;

float  x=StrToFloat (S)+StrToFloat(T);

ShowMessage (FloatToStr(x));

 

In cazul in care, pentru ultimele doua functii conversia nu reuseste (datele sunt eronate) programul da eroare de executie ca in   exemplul urmator unde sirul S nu poate fi convetit catre intregi:

 

AnsiString S=”-A17”,T=”22”;

int x=StrToInt (S)+StrToInt (T);

 

 

AnsiString este, asa cum am precizat, o clasa.Prin urmare, ea este inzestrate cu metode proprii.

 

1. Metoda Length –returneaza lungimea sirului de caractere.

int Length ( )

AnsiString S(„1a2na”);

ShowMessage (IntToStr (S.Length ( )));  //  Se afiseaza 5;

 

Atentie! Se apeleaza variabila_sir.Length( ). Apelul metodelor unor clase se face: obiect.metoda( );

 

2. Metoda LowerCase  -returneaza sirul scris cu litere mici:

AnsiString LowerCase ( )

AnsiString S(„1A2Na”);

ShowMessage(S.LowerCase ());  //  se afiseaza 1a2na

 

3. Metoda UpperCase  -returneaza sirul scris cu litere mari:

AnsiString UpperCase ( )

AnsiString S(„1a2Na”);

ShowMessage (S.UperrCase());  //  se afiseaza 1A2NA

 

4. Metoda SubString - are rolul de a returna subsirul care incepe cu octetul (caracterul) de indice index si are lungimea lung:

 

AnsiString SubString(int index,int lung);

AnsiString S=”floare”;

ShowMessage (S.SubString(2,3));  //  afiseaza loa

 

5. Metoda Insert - are rolul  de a insera sir inaintea octetului (caracterului) de indice index:

 

void Insert (AnsiString sir, int Index);

 

AnsiString S=”Mica”,T=”ti”;

S.Insert (T,3);

ShowMessage (S);  //  afiseaza Mitica

 

6. Metoda Delete - are rolul de a suprima dintr-un sir subsirul care incepe cu octetul (caracterul) de indice index si are lungimea lung:

 

void Delete (int index, int lung);

AnsiString S=”Mitica”;

S.Delete(3,2);

ShowMessage(S);  //  se afiseaza Mica

 

7. Metoda AnsiCompare -compara sirul curent (pentru care este apelata) cu sirul transmis ca parametru.Compararea este lexicografica si intrucat a fost studiata, nu insistam asupra ei.(functioneaza similar cu functia strcmp(sir1,sir2), pe care o cunoasteti.). Functia va fi utila in cazul cautarii unui sir intr-o secventa de siruri sau la ordonarea unor siruri.

 

int AnsiCompare (AnsiString sir);

 

Rezultatul este:

·        0 , in caz de egalitate;

·        -1 , daca sirul curent este mai mic;

·        +1 ,daca sirul curent este mai mare;

 

AnsiString S=”toamna”,T=”vara”;

int n=S.AnsiCompare (T);

ShowMessage(IntToStr (n));  //  se afiseaza –1

 

Uneori este necesar ca o valoare memeorata in virgula mobila sa fie convertita cu format catre un sir.Pentru aceasta, este utila metoda FloatToStrF( ).

 Forma pe care o vom folosi pentru aceasta metoda este:

 

AnsiString FloatToStrF(variabila reala, AnsiString::sffFixed, int v, int zecimale);

 

Variabila v trebuie sa ia valorile:

7 daca se converteste catre sir o variabila de tip float;

15 daca se converteste catre sir o variabila de tip double;

18 daca se converteste catre sir o variabila de tip long double;

 

Daca rezultatul nu incape se fac rotunjiri.

AnsiString s;

float x= -1239.5678 ;

s=FloatToStrF(x,AnsiString::sffFixed,7,2);

ShowMessage(s);  //  se aafiseaza –1239.57