Конвертировать Char в AnsiChar или WideChar (Delphi) - PullRequest
2 голосов
/ 14 февраля 2011

Я обновляю очень старое (более 10 лет) приложение до последней версии Delphi XE.Я получаю ряд ошибок, вроде

Incompatible types: 'WideChar' and 'AnsiChar'

Я просто приводил тип к правильному типу: напр.AWideChar = WideChar (fncReturnsChar);

Это вызовет проблемы?

Ответы [ 3 ]

6 голосов
/ 15 февраля 2011

Там могут быть проблемы для вас.Вот белая книга по Unicode в Delphi от Marco Cantù.

http://edn.embarcadero.com/article/38980

2 голосов
/ 10 октября 2013
var
  C : Char;
  AC : AnsiChar;
begin
  AC := '1';
  // C := AC; Delphi does not know how to convert ANSI to Unicode without a codepage
  C := String(AC)[1]; // Any way we can do that by default ANSI decoder
end.
2 голосов
/ 18 июля 2012
var
    Initials: String[10];
    FullName: String;

begin

    Initials[1] := FullName[1]; // Error here after Delphi 2009

end;

Проблема в том, что String [10] является типом AnsiString в более поздних версиях Delphi.Вы собираетесь назначить Unicode-символ ANSI-символу в приведенном выше коде.

Решение - приведение простого типа:

Initials[1] := AnsiChar(FullName[1]);

Пожалуйста, обратитесь к документу, рекомендованному в ответе Микаэля Эрикссона.Это важно.

...