Encore le problème des caractères accentués
Windows 10 - lazarus-2.0.12-fpc-3.2.0-win64
Bonsoir,
Je me mets à Lazarus et je l'explore. Jusqu'à présent je n'avais aucun problème mais en voulant faire une permutation de caractères à partir d'un TEdit.text je me suis rendu compte que les caractères accentués n'apparaissaient pas. J'ai donc fait une simple itération du TEdit.text comme cela :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
|
procedure TForm1.Button1Click(Sender: TObject);
var
i : integer ; // indice de la variable edit1.Text
texte : String;
begin
ListBox1.Clear;
texte := Edit1.Text;
for i:=1 to Length(texte) do
begin
ListBox1.Items.Add(texte[i]);
end;
end; |
Les caractères éàè etc... sont vides. J'ai cherché sur les forums, appliqué par exemple [I]GuessEncoding(texte) pour savoir qu'elle était le codage du ' é ' cp1252 en l'occurence et j'ai fait toute les variantes entre UTF8toCp1252/ et inverse, j'ai lu ce wiki de freepascal intéressant https://wiki.freepascal.org/LCL_Unic...NSI_et_Unicode où j'ai essayé UTF8toAnsi et inversement, explorer Lazutils etc..
Je reconnais, humblement que mon niveau technique ne me permets pas de bien comprendre ce que je dois faire.
Donc question:
Y-a-t-il un moyen de boucler sur un texte (TEdit.text) avec caractère accentué et après traitement l'introduire dans une listBox ou un champ mémo d'une façon pas trop compliquée ?
Je vous remercie de votre patience, par avance
Caylus
Je ne vois pas de différence...
J'ai testé votre démo, et après avoir ajouté ce qui suit, je ne vois aucune différence: Avec ou sans la fonction UTF8Copy, j'obtiens toujours les accents de façon correcte...
Code:
1 2 3 4 5 6 7 8 9
| procedure TForm1.Button1Click(Sender: TObject);
var
i: integer;
begin
Memo1.Append(Edit1.Text + CHR(13));
Memo1.Append(UTF8Copy(Edit1.Text + CHR(13), 1, Length(Edit1.Text)));
for i := 1 to UTF8Length(Edit1.Text) do
Memo1.Append(UTF8Copy(Edit1.Text, i, 1));
end; |
qui donne Hélène dans les 3 cas.