Rejtélyes típusú pchar
Üdvözöljük delfisty! Ma, ha vezet, hogy milyen típusú PChar. És hogy ez a helyes használata. Ez a típus említett összes API függvény, úgy, mint a paraméter karakterlánc értékét.
Miután adatok manipulálásával egyenlő a változó str „ProgLammersclub.ru” megjegyzem, hogy az első karakter egy húr van egy indexe 1. Mivel a string típusú és milyen típusú tömb char hasonló vizsgálatot lehet egymáshoz rendelve. De, ha hozzá egy tömb változót string egy hiba, mert van egy sor kemény Kérdezni a tömb méretét, míg a sort nem tudjuk a hosszát, még a korlátait.
Nos, ha ez a fajta pont csak egy karakter, akkor, hogyan lehet megérteni a funkciója a paramétereket, hogy át őket. Ez nagyon egyszerű. Minden string átadva paraméterként a funkció, kell a végén a # 0. A pointer funkció megkeresi az első karaktert, és megy tovább, amíg meg nem megbotlik a # 0. Delphi automatizált átalakulás paraméterben megadjuk a sztring: MessageBox (0, „hello”, „hello”, 0) automatikus, ezért nem automatikus, amikor mutató változók nem tudom. Mindig levelet
Ez rendben van. Ugyanez az eredmény felhasználásával mutatók.
Ez azért van, mert a tömbök általában nullákkal töltjük fel.
1. példa: egy nagyon más történet:
Az üzenet van olyan karakter, mielőtt a kettő. Ez azért van, mert a számozás Delphi lehet kezdeni bármelyik index, ebben az esetben, akkor kezdődik 1 és 0 szimbólum nem használják. Tehát, amit mondtam, az elején rossz:
A finom tömb kijelzők, mert Delphi automatikusan kizárni mutató egy tömb.
2. példa: Nem tudom miért, de ahelyett, hogy kettesével tűnik nem értem. Miszticizmus.
Ezért egyértelmű, hogy kezdetben a változók nullákkal töltjük fel. Mindkét változó STR sem kivétel.
4. példa: Egy érdekes helyzet:
Mint látható a fejlécben vannak a karakterek „HR” mezőbe, majd később kettő. Mindennek van egy ésszerű magyarázat. STR_ARR húr végződik nulla, ezért a funkció nem talált nulla csak a végén STR_ARR vonalak és ment, hogy egy változó STR, így a húr STR_ARR fordult, így sokáig. Egy tér egymás után „HR” megérthető az első példa.
>> Típus
>> PCHAR: ^ CHAR; // ezzel együtt a típusú WideChar
>> PWIDECHAR: ^ WIDECHAR;
ez a kód hibát fog okozni - írja a részben típusú Pascal adják = helyett vastagbél;
>> 2. példa: Nem tudom miért, de ahelyett, hogy kettesével >> láthatóan nem érti. Miszticizmus.
>> var
>> STR_ARR: array [1..2] char;
>> STR: String; // bármilyen hosszúságú
>> kezdődik
>> str_ARR [1]: = 'H';
>> str_ARR [2]: = # 0;
>> STR: = '22' + # 0;
>> MessageBoxA (fogantyú, @ STR, @ str_ARR, MB_OK);
e célból szükséges, hogy @STR [1]
Egy str_ARR kimeneten általában, mint a tömb char, nem: karakterlánc, karakterek benne tárolt nulla bájt (annak ellenére, hogy a számozás a leírás típusú egység) pascal tömb byte a memóriában vannak tárolva a 0-edik bájt az adatstruktúra
Igen, ez általában egy diák írta, nézd meg az írás stílusa és nyelvtani hibákat.
Típus
PCHAR: ^ CHAR; // ezzel együtt a típusú WideChar
PWIDECHAR: ^ WIDECHAR;
oBshibsya, oBshibsya. köszi a cikket rezenziyu