Есть Tntmemo1 и Tntmemo2. У обеих tntmemo1.Font.Name:=Arial Sakha Unicode (Якутский шрифт) и там и там могу набрать нац. символы. Нормально отображаются.
Но если набираю в 1-м и записываю так:
Код:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | procedure TForm1 . Button2Click(Sender: TObject);
var
w: string ;
procedure writestring(ss: string );
var sizess: byte ;
begin
sizess:=length(ss);
blockWrite(f,sizess,sizeof(sizess));
blockWrite(f,ss[ 1 ],sizess*sizeof(ss[ 1 ]));
end ;
begin
w:=utf8encode(tntmemo1 . Text);
assignfile(f, '1.dat' );
rewrite(f, 1 );
writestring(w);
closefile(f);
end ;
|
а во втором читаю так:
Код:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | procedure TForm1 . Button1Click(Sender: TObject);
function readstring(): string ;
var sizess: byte ;
s: string ;
begin
blockRead(f,sizess,sizeof(sizess));
Setlength(s,sizess);
blockRead(f,s[ 1 ],sizess*Sizeof(s[ 1 ]));
result:=utf8decode(s);
end ;
begin
assignfile(f, '1.dat' );
reset(f, 1 );
tntmemo2 . Lines . Add(readstring());
closefile(f);
end ;
|
то нац. символы во втором отображаются знаками '?', а кириллица нормально отображается.
Скриншот и файл прикрепляю