Proceduri și funcții pentru lucrul cu șiruri de caractere în Delphi
Șiruri sunt adesea folosite în programele - cel puțin pentru afișarea diferitelor mesaje către utilizator, astfel încât să nu se piardă în interfață. Ei bine, pentru astfel de cazuri simple, este suficient ca informațiile pe care le-ați primit în lecția dedicată liniilor. Dacă aveți intenții mai serioase și doriți să manipuleze siruri de caractere așa cum doriți (de exemplu, scrieți un fel de joc de cuvinte Balda sau logogrif), apoi Delphi va găsi tot ce este necesar pentru astfel de iubitorii de literatură și jonglerie prefixe și sufixe.
Pentru claritate, în exemple vom presupune acest lucru
Când am studiat operațiile simple cu șiruri de caractere, am considerat șiruri de concatenare folosind operatorul +. Dar puteți combina două linii cu o funcție
care returnează "suma" a două rânduri:
Pentru a compara șiruri de caractere, puteți utiliza următoarele funcții în locul operatorilor relaționali.
Ambele funcții compară liniile s1 și s2. Primul - luând în considerare cazul literelor (majuscule / litere mici), al doilea - fără a lua în considerare.
Aceste funcții returnează o valoare
0, dacă liniile sunt egale;
Ele nu pot fi aplicate cuvintelor rusești, deci este mai bine să folosiți funcțiile:
care funcționează la fel de bine cu literele latine și rusești.
Acum, să trecem la procedurile și funcțiile care efectuează acțiuni mai complexe cu cuvinte.
Destul de des trebuie să convertiți toate literele unui cuvânt fie în majuscule, fie în litere mici. Dacă cuvintele conțin numai litere latine, puteți utiliza următoarele funcții:
Primul traduce cuvintele în litere mici (litere mici), al doilea - la literele superioare (majuscule). Pentru scrisorile rusești (și latine), funcțiile sunt potrivite.
Funcția AnsiLowerCase (S1) returnează șirul "coacăz".
Funcția AnsiUpperCase ("coacăz") va returna șirul "CURRANT".
Procedurile de afișare a mesajelor pe ecran (de obicei, într-o etichetă sau într-o listă) necesită un șir ca parametru și ce se întâmplă dacă trebuie să prezentați numărul utilizatorului? - Convertiți numărul în șir! Puteți face acest lucru singur, dar este mult mai convenabil să utilizați funcțiile încorporate ale Delphi.
Cel mai adesea, programele utilizează funcții pentru a converti numere întregi într-un șir:
De exemplu, IntToStr (1234) returnează șirul "1234".
Pentru numere reale există și o funcție similară
Dacă doriți să aflați cum este scris un număr zecimal în hexazecimal, utilizați următoarele funcții:
Al doilea parametru - Cifre - specifică numărul de cifre în hexazecimal.
Când introduceți date dintr-un fișier sau din anumite componente, în loc de un număr, obținem un șir de caractere. Și, deși constă din numere, nu este un număr. În acest caz, funcția
Și șirul S poate conține nu numai o zecimală, ci și un număr hexazecimal.
Cu toate acestea, această funcție este "periculoasă": dacă există cel puțin un caracter nevalid în șir, va apărea o eroare. Dacă aveți îndoieli rezonabile cu privire la corectitudinea șirului, este mai bine să vă îndreptați către o funcție fiabilă
Aceasta returnează TRUE dacă șirul este convertit la un număr fără erori și FALSE dacă este eronat. Valoarea variabilă (în exemplul nostru i) stochează un număr.
De asemenea, puteți utiliza procedura:
V este o variabilă de tip întreg sau tip real.
Codul este o variabilă a tipului întreg, în care numărul caracterului eronat din șir este returnat. Dacă nu există astfel de simboluri, atunci valoarea acestei variabile va fi zero.
Funcții similare pentru numere reale:
La începutul și / sau la sfârșitul liniei pot exista spații inutile. Sunt ușor de scăpat. prin aplicarea funcțiilor
Primul elimină spațiile de conducere, al doilea - ultimele, al treilea - ambele și altele. Aceste funcții returnează o nouă linie - deja fără spații.
Pentru a afla lungimea unui șir (numărul de caractere din el), puteți utiliza funcția
De exemplu. Lungimea (S1) va returna 9 și Lungimea (S2) - 7.
Ei bine, acum - cele mai interesante proceduri și funcții!
Ștergeți o parte a șirului S de la numărul de simbol Indice:
Aici Count este numărul de caractere pe care trebuie să le ștergeți.
De exemplu, după finalizarea procedurii:
Șirul va avea valoarea "MOTHERLAND".
Și după ștergerea procedurii (s2,5,3); Șirul s2 va fi trunchiat la "STEAM".
Dacă valoarea variabilei Index este mai mică decât una sau mai mult decât lungimea șirului, șirul va rămâne neschimbat. Nimic nu se întâmplă cu un șir și dacă numărul este mai mic decât unul.
Dacă Count este mai mult decât numărul de caractere dintr-un șir, începând cu Index, toate caracterele vor fi șterse la sfârșitul liniei.
Procedura de inserare acționează în sens invers - introduce substringul Substr în șirul Dest după numărul de simbol Indice:
De exemplu, după executarea procedurii de inserare ("З", s1,6); Șirul s1 se va transforma într-un cuvânt amuzant "WINDOW".
Și introduceți procedura ("КА", s2,8); ne va permite să ne bucurăm de neologismul "PARASHUTKA".
Dacă nu vrem să stricăm șirul original, așa cum face proceda de ștergere, putem crea o linie nouă tăind piesa dorită din orice linie:
Notă: pentru a obține același cuvânt ca în exemplu cu șterge (s2,5,3); am specificat alte valori ale parametrilor în apelul pentru funcții!
Și ultima funcție găsește poziția substring substr în str. Str. Funcția Pos (const substr: string; const str: șir): Integer;
Dacă șirul pe care îl căutați se întâlnește de câteva ori, primul apel către funcția Posă returnează poziția primei apariții, după care căutarea trebuie continuată din următoarea poziție. De exemplu, în cuvântul FELDFEBEL puteți găsi atât "mâncat".
Dacă nu există substring-uri în șir, atunci zero zero va reveni!