Показать сообщение отдельно
  #1  
Старый 16.03.2015, 05:36
Spot Spot вне форума
Прохожий
 
Регистрация: 16.03.2015
Сообщения: 4
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию Отображение нац. символов

Есть Tntmemo1 и Tntmemo2. У обеих tntmemo1.Font.Name:=Arial Sakha Unicode (Якутский шрифт) и там и там могу набрать нац. символы. Нормально отображаются.
Но если набираю в 1-м и записываю так:
Код:
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;

а во втором читаю так:
Код:
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;
то нац. символы во втором отображаются знаками '?', а кириллица нормально отображается.
Скриншот и файл прикрепляю
Вложения
Тип файла: zip utf8.zip (2.6 Кбайт, 1 просмотров)
Ответить с цитированием