Это типизированный указатель на строки, завершающиеся нулем (null-terminated strings). Дело в различии между форматом строк, используемых в функциях Windows API, и строками языка Object Pascal. Строки Windows и языка С не имеют определенного размера, и признаком их окончания служит нулевой символ (#0). При необходимости использовать встроенные функции Windows вам придется использовать PChar.
Помимо PChar в Object Pascal объявлены еще два типа указателей, специализирующихся на работе с текстовыми строками, заканчивающимися нулем. Это указатели PAn-siChar и PWideChar. Указатель PAnsiChar предназначен для работы со строками Ansi, а PWideChar - указатель на строку с 16-битными символами из таблицы Unicode.
var Buff : Array[0..12] of Char = 'Hello world!'#0;
P : PChar;
begin
p:=@Buff[0]; p:='Hello world!'; end;
В этом примере продемонстрированы способы сопоставления текстовых данных с указателем PChar.
Вариантные типы
Универсальный тип данных. В основном он предназначен для работы с результатами заранее не известного типа. Но за универсальность приходится платить: на переменную вариантного типа дополнительно отводится еще два байта памяти (это не считая байт, необходимых для хранения обычной типизированной переменной).
var vUniverse : variant;
iInt : integer;
sStr : string;
rR : real;
begin
iInt:=1; sStr:='Привет'; rR:=1.987; vUniverse:=iInt; vUniverse:=sStr; vUniverse:=rR; end;
Ни один из типов данных не позволит таких вольностей, как variant. В приведенном примере переменной vUniverse по очереди присваиваются значения различного типа.
Вариантный тип переменной полезен при вызове объектов, поддерживающих технологию OLE Automation, хранения значений даты/времени и создания массивов переменной длины.