Convert Char into AnsiChar or WideChar (Delphi)
I'm upgrading a very old (10+ years) application to the latest Delphi XE. There are a number of errors I keep getting like
Incompatible types: 'WideChar' and 'AnsiChar'
I have been just casting the char to the righ开发者_JAVA技巧t type: ex. AWideChar = WideChar(fncReturnsChar);
Is this going to cause problems?
There might be problems in there for you. Here is a white paper on Unicode in Delphi by Marco Cantù.
http://edn.embarcadero.com/article/38980
var
Initials: String[10];
FullName: String;
begin
Initials[1] := FullName[1]; // Error here after Delphi 2009
end;
The problem is that String[10] is the type of AnsiString in later Delphi versions. You are going to assign a Unicode character to an ANSI character in the above code.
The solution is a simple type cast:
Initials[1] := AnsiChar(FullName[1]);
Please refer the document recommended in Mikael Eriksson's answer. That is essential.
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.
精彩评论