У меня действительно глупый вопрос ... Почему этот код:Casting литералов в PChar/PAnsiChar
PChar('x');
причина ошибка "Нарушение прав доступа"? Оптимизация компилятора?
Пример:
var s: String;
...
s := StrPas(PAnsiChar('x'));
Это приводит к AV в Delphi 5/Delphi XE
Или этот:
Windows.MessageBox(0, PChar('x'), PChar('y'), 0);
Это приводит к AV в Delphi 5, но не в Delphi XE В XE есть пустой MessageBox
Пример консоли:
program Project1;
{$APPTYPE CONSOLE}
uses
SysUtils, Windows;
var s: String;
begin
s := StrPas(PChar('xxx')); // EAccessViolation here
end.
Другой действительно глупый вопрос: какую версию Delphi вы используете? И как это можно воспроизвести? Потому что только эта линия не будет компилироваться. –
Исправленных + примеры мне нужно изменить строку переменных литералов для тестирования, и я был немного удивлён ... @David Хеффернано Это точка XD –
Интересно. Является ли '' х '' символом символа? И вот только один символ? Возможно, это то, чего мне не хватает. –