Bonjour,

je cherche à écrire de l'UNICODE dans un fichier texte.

Le programme est très simple :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
procedure TForm1.Button2Click(Sender: TObject);
const
	kFilename	= 'D:\test.txt';
var
	Outfile	: system.text;
begin
	AssignFile(OutFile, kFilename);
	Rewrite(OutFile);
	try
		WriteLN(Outfile, 'Кгыыу');
		WriteLN(Outfile, 'َقضلاث');
	finally
		CloseFile(OutFile);
	end;
end;
(Sauf que la première chaîne s'écrit "Кгыыу" et la seconde "َقضلاث", c'est la balise "code" du site qui fait la transformation).


Quand je regarde dans mon fichier, j'ai bien deux lignes :



Bon, je cherche dans l'unité system.pas, et je trouve :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
TFileRec = packed record (* must match the size the compiler generates: 592 bytes *)
[...]
    case Byte of
      0: (RecSize: Cardinal);   //  files of record
      1: (BufSize: Cardinal;    //  text files
[...]
          BufPtr: PAnsiChar;
[...]
 
{ Text file record structure used for Text files }
  PTextBuf = ^TTextBuf;
  TTextBuf = array[0..127] of AnsiChar; // TODO: change to WideChar
  TTextRec = packed record (* must match the size the compiler generates: 720 bytes *)


C'est moi ou le mec de CodeGear a oublié de vider sa ToDo List avant de livrer la release ?

On ne peut plus utiliser system.text si on veut écrire de l'UNICODE ?

Merci de votre réponse

(J'ai peur...)