Исторически в Delphi, то Чар тип был фактически синонимом AnsiChar типа. То есть, один байт, представляющий символ из кодовой страницы ANSI. ПРИМЕЧАНИЕ:Это упрощение, которое игнорирует сложности, возникающие из многобайтовых символов, которые могут встречаться в строке ANSI, но этого достаточно для этого ответа.
Это соответствует с тем, что Строка тип был фактически синонимом AnsiString.
В Delphi 2009 г. это изменилось.
С Delphi 2009, Строка и типы Char стали синонимами для UnicodeString (а WideString с дополнительными возможностями) и WideChar, соответственно, отражая переход к Unicode как родной формат для строки и типы символов. A WideChar - это 2-байтовое значение, представляющее один символ Юникода (или одну половину суррогатной пары).
Поэтому в версиях Delphi до Delphi 2009, следующие две переменные были совместимых типов:
var
ach: ANSIChar;
ch: Char; // Synonymous with ANSIChar
Однако в Delphi 2009 и позднее значение «ч» деклараций изменений:
var
ach: ANSIChar;
ch: Char; // Synonymous with WIDEChar
в результате ACH и ч переменных больше не совместимые типы.
то есть причина, вы получаете эту ошибку в том, что у вас есть код, который был объявлен с AnsiChar типов и другим кодом, который, используя значения, объявленные типа Чара. При компиляции с старой версией Delphi, где Char = AnsiChar, два набора кода совместим, но в Delphi 2009 и позже Char = WideChar и поэтому оба типа (Char и AnsiChar) является не совместимый.
Вы попробовали Googling для сообщения об ошибке? Или нажатие F1 с сообщением об ошибке, выделенным в окне сообщений? Или попробуйте найти в документации для [AnsiChar] (http://docwiki.embarcadero.com/Libraries/XE7/en/System.AnsiChar) и [Char] (http://docwiki.embarcadero.com/Libraries/XE7/ ан/System.Char)? –
рядом с: [Разница между PAnsiChar и PChar] (http: // stackoverflow.com/questions/1803426/difference-between-pansichar-and-pchar) – bummi
Слишком плохо EMBA упустил явное различие между фундаментальными и родовыми типами .... –