Soweit ich weiß haben wir alle defines in Zeos7 für Compiler, älter als D7 rausgeschmissen. Außerdem ist ist das UTF8Encode/UTF8Decode da auch schon überall drin.
Es gab da eine kurze Absprache, ob irgendwer noch Interesse an solchen Compilern haben könnte. Das gleiche Spiel mit FPC2.2../Kylix
Mit 6.6.6 könnte das alles noch gehen, du bräuchtest jedoch irgendwelche UTF8 oder WideString Componenten wie TNT o.ä..
Altenativen für:
uses windows;
UTF8Decode
Delphi-Quellcode:
function AnsiToWide(
const S: AnsiString): WideString;
var
l: Integer;
begin
l := MultiByteToWideChar(CP, 0, PAnsiChar(@s[1]), - 1,
nil, 0);
//Checkout the Result-Lengh
if l = 0
then Exit;
SetLength(Result, l - 1);
MultiByteToWideChar(65001, 0, PAnsiChar(@s[1]),
- 1, PWideChar(@Result[1]), l - 1);
//Convert Ansi to Wide with supported Chars
end;
UTF8Encode:
Delphi-Quellcode:
function WideToAnsi(
const ws: WideString): AnsiString;
var
L: Integer;
begin
l := WideCharToMultiByte(65001,0, @ws[1], - 1,
nil, 0,
nil,
nil);
//Checkout the result length
if l = 0
then Exit;
SetLength(Result, l - 1);
//SetResult Length
WideCharToMultiByte(65001,0, @ws[1], - 1, @Result[1], l - 1,
nil,
nil);
// Convert Wide down to Ansi
end;
Du kannst die CP65001(UTF8) auch mit 1252 austauschen (dann aber dwFlags anstatt 0 mit WC_COMPOSITECHECK or WC_DISCARDNS or WC_SEPCHARS or WC_DEFAULTCHAR austauschen), somit WideToAnsi oder AnsiToWide erstellen, was deine Controls dann darstellen können.
Habe das alles so bei Zeos reingebröselt und funzt wunderbar. Jedoch werden unter CP1252 alle nicht unterstützen Bytesequenzen zu '?' umgewandelt.
Gruß Michael