Вверх ↑
Ответов: 2059
Рейтинг: 132
#1: 2015-02-01 01:42:00 ЛС | профиль | цитата
Тип PString - указатель на String значение. А String сам является указателем.
PString = ^String;
Массив символов String тоже заканчивающаяся символом с кодом 0 для быстрой конвертации.
Иногда путают понятия String и СТРОКА.
Вся путаница из за того что String и СТРОКА являются своего рода омографами.
String - это указатель на массив символов (после префикса), а СТРОКА - это префикс(длинна массива) и идущий за ним массив символов оканчивающийся 0.
Тип PChar - указатель на значение символа.
Он может также использоваться для указания на символы в пределах строки.
Если PChar указывает на первый символ строки, то его можно ассоциировать с ASCIZ строкой.
Иногда пишут такое:

PChar - нультерминальная строка

- pstr: PChar; - это нультерминальная строка (zero-terminated). Так называется, потому что представляет собой указатель на цепочку символов, заканчивающуюся терминальным нулем #0. Ее еще называют сишной строкой (из языка С, там она определяется как char*).
- type PChar = ^Char;
- Используется для вызова ANSI-версий API-функций (типа CreateFileA). VCL использует только ANSI-версии API-функций для совместимости со всеми версиями Windows, поэтому вызов CreateFile идентичен CreateFileA. В модуле SysUtils сделаны функции-оболочки для многих API-функций, в которые надо передавать String вместо PChar (все-таки PChar не родной паскалевкий тип).
Но это не корректно, потому что полуправда.
Пытаются выдать частный случай за формулировку понятия.
Это всё равно, что все прямоугольники назвать квадратами, а вот обратное можно.

Строк с двухбайтовым префиксом в природе нет.
Есть паскалевская стока она-же ShortString без терминального 0.
Но она имеет префикс в один байт (255 символов).
карма: 6

0