Einzelnen Beitrag anzeigen

EgonHugeist

Registriert seit: 17. Sep 2011
187 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#20

AW: Auf XE3 programmiert, auf 5 solls laufen.

  Alt 7. Jan 2013, 23:47
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

Geändert von EgonHugeist ( 8. Jan 2013 um 00:33 Uhr)
  Mit Zitat antworten Zitat