Здравствуйте, _Michael_V_, Вы писали:
_M_> p:='ABCDEFG';
_M_>И дело здесь не в ассемблере. Можно просто попытаться сделать что-то вроде p[0]:='A' внутри JustTest. Получится то же самое. Присваивание не проходит, если p задана присваиванием константы.
_M_>Я думал, что память выделяется аналогично в обоих случаях. Это не так? Если сделать p:='ABCDEF', то p станет указателем на константу что ли, и запись в нее чем-то пресекается?
Это действительно так. Константы хранятся с сегменте кода, который защищён от записи.
Решением является использование вместо pchar просто string.
Тогда при присваивании происходит выделение памяти и копирование.
Надо только не забывать, что перед присваиванием переменная должна быть инициализирована.