Stīgu veidi Delphi (Delphi iesācējiem)
Attēla avots RF/Cadalpe/Getty Images
Tāpat kā ar jebkuru programmēšanas valodu, in Delfos , mainīgie ir vietturi, ko izmanto vērtību glabāšanai; tiem ir nosaukumi un datu tipi. Mainīgā datu tips nosaka, kā biti, kas attēlo šīs vērtības, tiek saglabāti datora atmiņā.
Ja mums ir mainīgais, kas satur noteiktu rakstzīmju masīvu, mēs varam deklarēt, ka tas ir tipa Stīga .
Delphi nodrošina veselīgu virkņu operatoru, funkciju un procedūru klāstu. Pirms mainīgajam piešķiram virknes datu tipu, mums ir rūpīgi jāizprot Delphi četri virkņu veidi.
Īsa stīga
Vienkārši liec, Īsa stīga ir saskaitīts (ANSII) rakstzīmju masīvs ar līdz 255 rakstzīmēm virknē. Šī masīva pirmais baits saglabā virknes garumu. Tā kā Delphi 1 (16 bitu Delphi) šis bija galvenais virknes veids, vienīgais iemesls, lai izmantotu Short String, ir atgriezeniskā saderība.
Lai izveidotu ShortString tipa mainīgo, mēs izmantojam:
The s mainīgais ir īss virknes mainīgais, kas var saturēt līdz 256 rakstzīmēm, tā atmiņa ir statiski piešķirti 256 baiti. Tā kā tas parasti ir izšķērdīgs — maz ticams, ka jūsu īsā virkne izplatīsies līdz maksimālajam garumam, otrā pieeja Short String izmantošanai ir ShortString apakštipu izmantošana, kuru maksimālais garums ir no 0 līdz 255.
|_+_|
Tādējādi tiek izveidots mainīgais, ko sauc mazs kura maksimālais garums ir 50 rakstzīmes.
Piezīme. Piešķirot vērtību mainīgajam Short String, virkne tiek saīsināta, ja tā pārsniedz tipa maksimālo garumu. Kad mēs nododam īsas virknes kādai Delphi virkņu manipulācijas rutīnai, tās tiek pārveidotas par garu virkni un no tās.
Stīga / Garš / Ansi
Delphi 2 atveda uz Object Pascal Gara aukla veids. Garā virkne (Delphi palīdzībā AnsiString) ir dinamiski piešķirta virkne, kuras maksimālo garumu ierobežo tikai pieejamā atmiņa. Visās Delphi 32 bitu versijās pēc noklusējuma tiek izmantotas garas virknes. Iesaku izmantot garas stīgas, kad vien iespējams.
|_+_|The s mainīgais var saturēt no nulles līdz jebkuram praktiskajam rakstzīmju skaitam. Virkne palielinās vai samazinās, piešķirot tai jaunus datus.
Mēs varam izmantot jebkuru virknes mainīgo kā rakstzīmju masīvu, otro rakstzīmi s ir indekss 2. Šis kods
|_+_|piešķir T uz otro rakstzīmi os s mainīgs. Tagad daži no pirmajiem varoņiem s izskatās ka: TTe s str... .
Neļaujiet sevi maldināt, jūs nevarat izmantot s[0], lai redzētu virknes garumu, s nav ShortString.
Atsauču skaitīšana, kopēšana uz rakstīšanas
Tā kā atmiņas piešķiršanu veic Delphi, mums nav jāuztraucas par atkritumu savākšanu. Strādājot ar garajām (Ansi) stīgām, Delphi izmanto atsauces skaitīšanu. Tādējādi virknes kopēšana ir ātrāka garām virknēm nekā īsām virknēm.
Atsauces skaitīšana, piemēram:
Kad mēs izveidojam virkni s1 mainīgo un piešķiriet tam kādu vērtību, Delphi piešķir virknei pietiekami daudz atmiņas. Kad mēs kopējam s1 uz s2 , Delphi nekopē virknes vērtību atmiņā, tas tikai palielina atsauces skaitu un maina s2 lai norādītu uz to pašu atmiņas vietu kā s1 .
Lai samazinātu kopēšanu, kad virknes nododam rutīnām, Delphi izmanto kopēšanas un rakstīšanas tehniku. Pieņemsim, ka mums ir jāmaina vērtība s2 virknes mainīgais; Delphi kopē pirmo virkni uz jaunu atmiņas vietu, jo izmaiņām vajadzētu ietekmēt tikai s2, nevis s1, un tās abas norāda uz vienu un to pašu atmiņas vietu.
Plata aukla
Plašas virknes arī tiek dinamiski piešķirtas un pārvaldītas, taču tajās netiek izmantota atsauces skaitīšana vai kopēšanas un rakstīšanas semantika. Plašas virknes sastāv no 16 bitu unikoda rakstzīmēm.
Par unikoda rakstzīmju kopām
Operētājsistēmā Windows izmantotā ANSI rakstzīmju kopa ir viena baita rakstzīmju kopa. Unicode katru rakstzīmju kopas rakstzīmi saglabā 2 baitos, nevis 1 baitos. Dažās nacionālajās valodās tiek izmantotas ideogrāfiskas rakstzīmes, kurām nepieciešams vairāk nekā ANSI atbalstītās 256 rakstzīmes. Ar 16 bitu apzīmējumu mēs varam attēlot 65 536 dažādas rakstzīmes. Vairāku baitu virkņu indeksēšana nav uzticama, jo s[i] apzīmē i-to baitu (ne vienmēr i-to rakstzīmi). s .
Ja jums ir jāizmanto Wide rakstzīmes, jums ir jādeklarē virknes mainīgais WideString tipa un rakstzīmju mainīgajam WideChar tipam. Ja vēlaties pārbaudīt platu virkni pa vienai rakstzīmei, noteikti pārbaudiet vairāku kodu rakstzīmes. Delphi neatbalsta automātisku tipu konvertēšanu starp Ansi un Wide virkņu veidiem.
|_+_|Null pārtraukta
Nulles vai nulles beigu virkne ir rakstzīmju masīvs, kas indeksēts ar veselu skaitli, sākot no nulles. Tā kā masīvam nav garuma indikatora, Delphi izmanto ASCII 0 (NULL; #0), lai atzīmētu virknes robežu.
Tas nozīmē, ka būtībā nav atšķirības starp nulles gala virkni un Char tipa masīvu [0..NumberOfChars], kur virknes beigas ir apzīmētas ar #0.
Izsaucot Windows API funkcijas, Delphi mēs izmantojam nulles gala virknes. Objekts Pascal ļauj mums izvairīties no norādes uz nulles masīviem, kad tiek apstrādātas nulles gala virknes, izmantojot PChar veidu. Iedomājieties, ka PChar ir rādītājs uz nulles gala virkni vai masīvu, kas to apzīmē. Lai iegūtu papildinformāciju par norādēm, pārbaudiet: Norādes Delfos .
Piemēram, The GetDriveType API funkcija nosaka, vai diskdzinis ir noņemams, fiksēts, CD-ROM, RAM disks vai tīkla diskdzinis. Šajā procedūrā ir uzskaitīti visi diskdziņi un to veidi lietotāja datorā. Ievietojiet veidlapā vienu pogu un vienu Memo komponentu un piešķiriet pogas OnClick apstrādātāju:
|_+_|Delfu stīgu miksēšana
Mēs varam brīvi jaukt visas četras dažādu veidu stīgas, Delphi sniegs vislabāko izpratni par to, ko mēs cenšamies darīt. Piešķīrums s:=p, kur s ir virknes mainīgais un p ir PChar izteiksme, kopē nulles beigu virkni garā virknē.
Rakstzīmju veidi
Papildus četriem virkņu datu tipiem Delphi ir trīs rakstzīmju veidi: Char , AnsiChar , un WideChar . Virknes konstante ar garumu 1, piemēram, “T”, var apzīmēt rakstzīmes vērtību. Vispārīgais rakstzīmju veids ir Char, kas ir līdzvērtīgs AnsiChar. WideChar vērtības ir 16 bitu rakstzīmes, kas sakārtotas atbilstoši unikoda rakstzīmju kopai. Pirmās 256 unikoda rakstzīmes atbilst ANSI rakstzīmēm.