Simple-Scada forum

Simple-Scada 2 => Ваши вопросы => Тема начата: pan2000 от 01 Августа 2018, 08:55:53

Название: Лишний символ TextFileReadLn
Отправлено: pan2000 от 01 Августа 2018, 08:55:53
Функция TextFileReadLn при первом обращении возвращает лишний первый символ.

Пример во вложении.
Название: Re: Ошибка TextFileReadLn
Отправлено: Simple-Scada от 01 Августа 2018, 10:13:33
Здравствуйте.

Функция TextFileReadLn работает одинаково для всех строк в файле, независимо от их позиции, или от количества обращений к файлу. Ваш файл сохранён с отметкой BOM (Byte order mark) (https://ru.wikipedia.org/wiki/%D0%9C%D0%B0%D1%80%D0%BA%D0%B5%D1%80_%D0%BF%D0%BE%D1%81%D0%BB%D0%B5%D0%B4%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%BE%D1%81%D1%82%D0%B8_%D0%B1%D0%B0%D0%B9%D1%82%D0%BE%D0%B2), поэтому она просто считывается из файла. Сохраните файл без BOM, либо удаляйте символы BOM в коде скрипта:
Код: (delphi)
begin
  TextFileOpen('MyTextFile.txt', '', fomReset, fcpUTF8);
  Text1.Text := TextFileReadLn.Replace(#$FEFF, '');
  Text2.Text := TextFileReadLn;
  TextFileClose;
end.