Bonsoir,
Hélas c'est encore moi avec mes migrations hasardeuses.
Là c'est une grille que j'essaie de remplir avec les caractères d'une police : les 95 premiers ça se passe toujours très bien comme on peut le voir en 32 bits, les 95 suivants ça se passe également bien en s'appuyant sur utf8tools (site) et Laz 1.4 32 bits :
par contre le même code me rate une marche sur deux en 64 bits à partir du 129e caractère, notez les colonnes de ? :
J'ai tout essayé, j'ai passé l'après-midi le nez dans les wikis UTF8 et Unicode strings sans avancer d'un centimètre.
Une idée ?
PS : mettre ou pas {$codepage UTF8} // https://wiki.freepascal.org/FPC_Unicode_support/fr dans la Unit1.pas ne change strictement rien au résultat.
Le cœur du code :
fCES est un TCharEncStream fourni par utf8tools.charencstream.pas :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 c := 31; For i := 0 To 13 do //lignes For j := 0 To 15 do begin //colonnes c := c + 1; if c <> 128 then begin if (c > 128) and (c < 160) then continue; // les pas bons fCES.UTF8Text := chr(c); Grille.Cells[j, i] := fCES.UTF8Text; end; end;
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 TCharEncStream = class(TUniStream) private fANSIEnc: string; function GetANSIEnc: string; procedure SetANSIEnc(const AValue: string); protected function GetUTF8Text: AnsiString; override; procedure SetUTF8Text(AString: AnsiString); override; public constructor Create; override; destructor Destroy; override; property ANSIEnc: string read GetANSIEnc write SetANSIEnc; end;
Partager