Показать сообщение отдельно
  #1  
Старый 21.03.2015, 22:28
Аватар для Помидоркин
Помидоркин Помидоркин вне форума
Начинающий
 
Регистрация: 07.10.2012
Адрес: Дедовск
Сообщения: 110
Версия Delphi: Rio 10.3
Репутация: 10
По умолчанию Чтение из файла. UTF-8

Задача такая: найти в файле с кодировкой UTF-8 определенную строку (.fb2 основан на xml, нужно содержимое определенных тегов), для того что-бы разобраться, как происходит считывание из файла набрасал код:
Код:
var
  Form1: TForm1;
  F: TextFile;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
 AssignFile(F,'Klarkson.fb2');
 Reset(F);
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
 CloseFile(F);
end;

procedure TForm1.Button1Click(Sender: TObject);
var s: UTF8String;
begin
 Memo1.Clear;
 Readln(F,s);
 Memo1.Lines.Append(Utf8ToAnsi(s));
end;
Как я понял AssignFile(F,'Klarkson.fb2'); Reset(F); , так сказать подготавливают файл к чтению (записи), а Readln(F,s); считывает из файла построчно, т.е. чтения всего файла не происходит.
Проблемма в том, что, фактически файл состоит из двух строк - первая примерно такого вида: <?xml version="1.0" encoding="UTF-8"?>, а вторая - все остальное (включая изображения). Т.е. для того что-бы выудить из строки нужное содержимое, надо в эту строку считать весь файл, а искомый текст находится, как правило, в самом начале файла. Задача состоит в том, что-бы считывать из файла пока не будет найдено искомое, а дальше можно смело закрывать файл.
Ответить с цитированием