Tāpat kā ar jebkuru programmēšanas valodu, arī Delfi, mainīgie ir vietturi, kurus izmanto vērtību saglabāšanai; viņiem ir vārdi un datu tipi. Mainīgā datu tips nosaka, kā biti, kas attēlo šīs vērtības, tiek glabāti datora atmiņā.
Ja mums ir mainīgais lielums, kas satur kādu rakstzīmju masīvu, mēs varam paziņot, ka tas ir tipaStīgu.
Delphi nodrošina veselīgu virkņu operatoru, funkciju un procedūru sortimentu. Pirms virknes datu veida piešķiršanas mainīgajam, mums ir rūpīgi jāizprot Delphi četri virkņu tipi.
Īsa virkne
Vienkārši liec, Īsa virkne ir saskaitīts (ANSII) rakstzīmju masīvs ar virkni līdz 255 rakstzīmēm. Šīs masīva pirmais baits saglabā virknes garumu. Tā kā šis bija galvenais virknes tips Delphi 1 (16 bitu Delphi), vienīgais iemesls, kāpēc izmantot īso virkni, ir savietojamība ar atpakaļejošu datumu.
Lai izveidotu ShortString tipa mainīgo, mēs izmantojam:
var s: ShortString; s: = 'Delphi programming'; // S_Length: = Ords (s [0])); // kas ir tāds pats kā garums (-i)
s mainīgais ir īsās virknes mainīgais, kas spēj turēt līdz 256 rakstzīmēm, tā atmiņa ir statiski sadalīta 256 baiti. Tā kā tas parasti ir izšķērdīgi - maz ticams, ka jūsu īsā virkne izplatīsies līdz maksimālajam garumam - otrajai pieeja īso virkņu izmantošanai tiek izmantota ShortString apakštipi, kuru maksimālais garums ir no 0 līdz 255.
var ssmall: stīga [50]; ssmall: = 'Īsa virkne, līdz 50 rakstzīmēm';
Tādējādi tiek izveidots mainīgais ar nosaukumu ssmall kura maksimālais garums ir 50 rakstzīmes.
Piezīme: piešķirot mainīgajai īsās virknes vērtību, virkne tiek saīsināta, ja tā pārsniedz tipa maksimālo garumu. Kad mēs nododam īsas virknes kādai Delphi virknes manipulācijas kārtībai, tās tiek pārveidotas par garu virkni un no tās.
Stīgas / Garas / Ansi
Delphi 2 nogādāja objektā Paskālu Garais stīgas tips. Garā virkne (Delphi palīdz AnsiString) ir dinamiski iedalīta virkne, kuras maksimālo garumu ierobežo tikai pieejamā atmiņa. Visās 32 bitu Delphi versijās pēc noklusējuma tiek izmantotas garas virknes. Es iesaku izmantot garas stīgas, kad vien iespējams.
var s: stīga; s: = 'S virkne var būt jebkura izmēra ...';
s mainīgais var turēt no nulles līdz praktiskam rakstzīmju skaitam. Virkne palielinās vai sarūk, kad tai piešķirat jaunus datus.
Mēs varam izmantot jebkuru virknes mainīgo kā rakstzīmju masīvu, otro burtu - s ir indekss 2. Šis kods
s [2]: = 'T';
piešķir T uz otro rakstzīmi s mainīgs. Tagad daži no pirmajiem burtiem s izskatās ka: TTe s ....
Neļaujiet maldināt, jūs nevarat izmantot s [0], lai redzētu virknes garumu, s nav ShortString.
Atsauces skaitīšana, kopēšana-rakstīšana
Tā kā atmiņu piešķir Delphi, mums nav jāuztraucas par atkritumu savākšanu. Strādājot ar garām (Ansi) stīgām, Delphi izmanto atsauces skaitīšanu. Tādā veidā virkņu kopēšana ir garāku virkņu ātrāka nekā īso virkņu.
Atsauces skaitīšana, piemēram:
var s1, s2: stīga; s1: = 'pirmā virkne'; s2: = s1;
Kad mēs izveidojam virkni s1 un piešķir tam kādu vērtību, Delphi atvēl 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 norādīt uz to pašu atmiņas vietu kā s1.
Lai samazinātu kopēšanu, nododot virknes rutīnai, Delphi izmanto kopēšanas-rakstīšanas metodi. Pieņemsim, ka mums jāmaina s2 virknes mainīgais; Delfi pirmo virkni kopē jaunā atmiņas vietā, jo izmaiņām būtu jāattiecas tikai uz s2, nevis s1, un viņi abi norāda uz vienu un to pašu atmiņas vietu.
Plaša stīga
Plašās virknes tiek arī dinamiski iedalītas un pārvaldītas, taču tās neizmanto atsauces skaitīšanu vai semantiku kopēšanai-rakstīšanai. Plašās virknes sastāv no 16 bitu Unicode rakstzīmēm.
Par Unicode rakstzīmju kopām
ANSI rakstzīmju kopa, ko izmanto sistēma Windows, ir viena baita rakstzīmju kopa. Unicode katru rakstzīmju kopas rakstzīmi saglabā 2 baitos, nevis 1. Dažās valstu valodās tiek izmantotas ideogrāfiskas rakstzīmes, kurām nepieciešams vairāk nekā 256 rakstzīmes, kuras atbalsta ANSI. Ar 16 bitu notāciju mēs varam attēlot 65 536 dažādas rakstzīmes. Kopš tā laika daudzbaitu virkņu indeksēšana nav ticama s [i] apzīmē i. baitu (ne vienmēr i. rakstzīmi) s.
Ja jums ir jāizmanto plašās rakstzīmes, virknes mainīgais ir jādeklarē kā WideString tips un rakstzīmju mainīgais par WideChar tipu. Ja vēlaties pārbaudīt plašu virkni vienu rakstzīmi vienlaikus, noteikti pārbaudiet, vai tajā nav daudzbitu rakstzīmju. Delfi neatbalsta automātiskus tipa konvertējumus starp Ansi un Wide virkņu veidiem.
var s: WideString; c: WideChar; s: = 'Delphi_ ceļvedis'; s [8]: = 'T'; //s='Delphi_TGuide';
Nulle nav izbeigta
Nulle vai nulle, kas beidzas ar virkni, ir rakstzīmju masīvs, ko indeksē vesels skaitlis, sākot no nulles. Tā kā masīvam nav garuma indikatora, Delphi izmanto ASCII 0 (NULL; # 0), lai apzīmētu virknes robežu.
Tas nozīmē, ka būtībā nav atšķirības starp nulles izbeigtu virkni un masīvu [0..NumberOfChars], kura tips Char, kur virknes beigas ir apzīmētas ar #.
Zvanot Windows API funkcijām, Delphi tiek izmantotas nulles virknes. Objekts Paskāls ļauj mums izvairīties no nesajaukšanās ar norādēm uz nulles bāzes blokiem, apstrādājot nulles izbeigtas virknes, izmantojot PChar tipu. Padomājiet par PChar kā rādītāju, kas norāda virkni, kurai nav gala, vai masīvu, kas to attēlo. Lai iegūtu vairāk informācijas par norādēm, pārbaudiet:Norādes Delfos.
Piemēram, The GetDriveType API funkcija nosaka, vai diska diskdzinis ir noņemams, fiksēts, kompaktdisks, RAM disks vai tīkla disks. Šajā procedūrā ir uzskaitīti visi diskdziņi un to veidi lietotāja datorā. Novietojiet veidlapā vienu pogu un vienu piezīmju komponentu un piešķiriet pogas apstrādātājam OnClick:
procedūra TForm1.Button1Click (Sūtītājs: TObject); var Brauciet: Char; DriveLetter: stīgas [4]; sāktpriekš Braukt: = 'A' uz “Z” darītsākt DriveLetter: = Disks + ': \'; lietu GetDriveType (PChar (Drive + ': \')) no DRIVE_REMOVABLE: Memo1.Lines. Pievienot (DriveLetter + 'Floppy Drive'); DRIVE_FIXED: Memo1.Lines. Pievienot (DriveLetter + 'Fiksētais disks'); DRIVE_REMOTE: Memo1.Lines. Pievienot (DriveLetter + 'Network Drive'); DRIVE_CDROM: Memo1.Lines. Pievienot (DriveLetter + 'CD-ROM diskdzinis'); DRIVE_RAMDISK: Memo1.Lines. Pievienot (DriveLetter + 'RAM disks'); beigas; beigas; beigas;
Delfu stīgu sajaukšana
Mēs varam brīvi sajaukt visas četras dažādas virknes, Delphi piešķirs, ka vislabāk ir saprast, ko mēs cenšamies darīt. Piešķiršana s: = p, kur s ir virknes mainīgais un p ir PChar izteiksme, un ar nulli izbeigtu virkni kopē garā virknē.
Rakstzīmju veidi
Papildus četriem virkņu datu tipiem Delphi ir trīs rakstzīmju tipi: Char, AnsiChar, unWideChar. Virknes konstante garumā 1, piemēram, “T”, var apzīmēt rakstzīmes vērtību. Vispārīgais rakstzīmju tips ir Char, kas ir līdzvērtīgs AnsiChar. WideChar vērtības ir 16 bitu rakstzīmes, kas sakārtotas atbilstoši Unicode rakstzīmju kopai. Pirmās 256 Unicode rakstzīmes atbilst ANSI rakstzīmēm.