background image

 

 

Obsługa wierszy tekstu

Języki programowania - C++

 

Marzena Nowakowska

Wydział Zarządzania i Modelowania 

Komputerowego

Politechnika Świętokrzyska

background image

 

 

Plan wykładu

Tablica znaków
Klasa AnsiString
Wybrane metody klasy AnsiString
Konwersja typów w klasie AnsiString
Operacje na obiektach klasy AnsiString
Komponent typu TMemo
Klasa TStrings i dostęp do tekstów w tej 

klasie

background image

 

 

Tablica znaków

Deklarowanie tablicy znakowej: 

char 

identyfikator[liczba_elementów];

Przykład: 

char tablica[30];

Inicjowanie tablicy znaków

:

char tekst0[15] = {'6', '7', '&', '8‘, '9', '0', '&', '^', 
'%', '=', '|‘, 'a‘};
char tekst1[15] = "67&890&^% =|a";
char tekst2[] = "67&890&^% =|a";

tekst1 -> 6 7 & 8 9 0 & $ % = |

a \0 ?

?

tekst2 -> 6 7 & 8 9 0 & $ % =

|

a

\0

W BCB zamiast tablic znakowych używa się danych klasy AnsiString

background image

 

 

Klasa AnsiString

Konstruktory

:

AnsiString() 

AnsiString napis1; AnsiString napis2=“to jest napis”;

 

AnsiString(const char* src)

char napis3[]=“A to inny napis”; // inicjowanie tablicy
AnsiString napis4(napis3);

 

AnsiString(const char* src, unsigned char len)

AnsiString napis5(napis3, 4);  // 

->“A to”

 

AnsiString(int src)

AnsiString napis6(10); //

-> “10” 

AnsiString(double src)

AnsiString napis7(10.15); // -> “10.15”

 

background image

 

 

Wybrane metody klasy 

AnsiString

• double ToDouble()
• int ToInt()
• AnsiString LowerCase(), AnsiString UpperCase() 
• int AnsiCompare(const AnsiString& rhs)
• char* AnsiLastChar()
• void Insert(const AnsiString& str, int index)
• bool IsEmpty()
• AnsiString StringOfChar(char ch, int count)
• AnsiString TrimLeft(), AnsiString TrimRight(), 

AnsiString Trim()

• int Length() 
• int AnsiPos(const AnsiString& subStr)
• AnsiString SubString(int index, int count)

Uwaga: kolejne elementy tekstu w obiekcie AnsiString są numerowane od 1

background image

 

 

Konwersja typów w klasie 

AnsiString

Podano uproszczone definicje prototypów 
• double ToDouble()
• int ToInt()
• char* c_str()
• AnsiString FloatToStrF(long double value, 

TStringFloatFormat format, int precision, int 

digits);

 wybrane stałe predefiniowane dla parametru 

format: sffGeneral , sffFixed, sffCurrency

Przykłady:

double a; int i; char znaki[10];
AnsiString AA, II, ZNAKI;
AA=”123.094”; a=AA.ToDouble();
II=”123”; i=II.ToInt();
ZNAKI=”tekst”; strcpy(znaki, ZNAKI.c_str());
AA.FloatToStrF(22.55, sffFixed, 6,2);

background image

 

 

Przykłady wykorzystania  

metod klasy AnsiString

Przeładowane operatory:  

!=

= =

<

<=

>

>=

+

+=

AnsiString tekst, fragment_tekstu;
int nr_sep, dlugosc;
tekst=”Janko Muzykant;    55.5”;
nr_sep=tekst.AnsiPos(";");   
dlugosc=tekst.Length()-nr_sep;    
fragment_tekstu = 
tekst.SubString(nr_sep+1,dlugosc); 
fragment_tekstu = fragment_tekstu.Trim();  
 

background image

 

 

Komponent typu 

TMemo

• Użyteczne właściwości

Alignment

taLeftJustifytaRightJustifytaCenter

ScrollBars:ssNone, ssHorizontal, ssVertical, ssBoth
WordWrap

true, false

Lines 

- obiekt typu 

TStrings *

• Wybrane metody:

SetAlignment

SetScrollBars

SetWordWrap

SetFocus

TCustomEdi

t

TCustomMe

mo

TMemo

Obiekt klasy TMemo jest komponentem 
wizualnym, który umożliwia wprowadzania lub 
wyświetlania wielu wierszy tekstu. Dostęp do 
zbioru wierszy odbywa się za pośrednictwem 
właściwości Lines

background image

 

 

Klasa TStrings

TStrings jest klasa bazową dla obiektów, które 

reprezentują kolekcję łańcuchów (tekstów). Klasa jest 
zdefiniowana do zarządzania „listą łańcuchów” czyli 
zbiorem wierszy tekstu. 

Klasa wprowadza właściwości i metody aby: dodawać do 

lub usuwać z określonego miejsca w tekście łańcuchy, 
zmieniać położenie łańcuchów w tekście, mieć dostęp 
do określonej pozycji łańcucha, dokonywać transmisji 
łańcuchów do lub z  pliku 

nr_sep= Memo1->Lines->Strings[0].AnsiPos(";");

       dlugosc= Memo1->Lines->Strings[0].Length()-nr_sep ;
       ocena= Memo1->Lines-
>Strings[0].SubString(nr_sep+1,dlugosc);

background image

 

 

Klasa TStrings

• Wybrane właściwości:

 

int Capacity

 

wskazuje liczbę wierszy jaką może przechować obiekt TStrings

int Count

 

informuje o liczbie wierszy zapisanych w obiekcie TStrings

AnsiString Strings[int Index]

 

tablica identyfikująca kolejne wiersze; odwołanie do łańcucha o 

określonym numerze jest realizowane poprzez indeks tablicy 
Strings, poczynając od elementu o numerze 0, np. 

dane->Lines-

>Strings[i]

 

•   Wybrane metody

int  Add(const AnsiString S)

dodaje łańcuch na końcu tekstu w obiekcie i zwraca jego 
indeks.

void AddStrings(TStrings* Strings)

  

dodaje zbiór łańcuchów do listy.

 

void Clear(void)

    

usuwa (czyści) wszystkie łańcuchy na liście.

void Delete(int Index)

 

usuwa łańcuch o podanym numerze z listy (pierwszy łańcuch 
ma numer 0).

background image

 

 

Obsługa tekstu w klasie 

TStrings

Odwołanie do wiersza elementu dane wskazującego na obiekt klasy 

TMemo w formularzu jest następujące:

dane->Lines->Strings[i]

• dane

 jest wskazaniem do obiektu typu TMemo, dlatego jego 

właściwość 

Lines

 jest wybrana selektorem pośrednim (strzałka): ->

• dane->Lines

 jest elementem typu TStrings *, dlatego właściwość 

Strings klasy TStrings jest wybrana selektorem pośrednim 
(strzałka): ->.

• Właściwość Strings jest kolekcją (tablicą) obiektów klasy 

AnsiString, dlatego należy wybrać jeden element tej tablicy 
wskazując na jego indeks: 

dane->Lines->Strings[i]

• dane->Lines->Strings[i]

 jest obiektem klasy AnsiString dlatego 

wykorzystanie właściwości tej klasy na rzecz ww. obiektu odbywa 
się poprzez selektor bezpośredni (kropka): .

• Przykład (jaki będzie wynik?): 

dane->Lines->Strings[i].ToDouble()


Document Outline