Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?

Официальный форум Simple-Scada.

Автор Тема: Запись Integer в файл  (Прочитано 5039 раз)

pan-nn

  • Новичок
  • *
  • Сообщений: 30
    • Просмотр профиля
Запись Integer в файл
« : 15 Марта 2017, 15:23:22 »
Добрый день. 
При записи целого числа  в файл  записывается значение с учетом сдвига запятой. Допустим - пишем 200, сдвиг -1, в файле будет 20.0, хотя переменная  Integer. При чтении из файла в Int, значение будет 20, а с учетом сдвига -1,  допустим в "Поле" будет аж 2.0
А функция OriginalAsExtended выдает ошибку компиляции, или я не понимаю ее синтаксис

Simple-Scada

  • Администратор
  • *****
  • Сообщений: 3214
    • Просмотр профиля
    • Simple-Scada
Re: Запись Integer в файл
« Ответ #1 : 15 Марта 2017, 16:32:54 »
Здравствуйте.

Цитировать
При записи целого числа  в файл  записывается значение с учетом сдвига запятой.
Верно. И как Вы правильно заметили нужно использовать OriginalAsInt, OriginalAsFloat и OriginalAsExtended в зависимости от типа переменной. Если вы записываете целое число в текстовый файл, то перед записью значение нужно перевести в строку. Пример ниже.

Запись оригинального целого в текстовый файл:
Код
begin
  TextFileOpen('MyTextFile.txt', '', fomRewrite, fcpUTF8);  // создаем и открываем файл
  TextFileWriteLn(IntToStr(vrWrite.OriginalAsInt));         // записываем значение переведенное в строку
  TextFileClose;                                            // закрываем файл
end.

Чтение назад в переменную из текстового файла. Здесь действия идут в обратном порядке. Сначала читаем из файла строку, затем переводим в целое число и пишем в переменную:
Код
var
  aReadStr: string;
begin
  { прерываем скрипт если файл не существует }
  if not FileExists('MyTextFile.txt') then
    Exit;

  TextFileOpen('MyTextFile.txt', '', fomReset, fcpUTF8);  // открываем файл для чтения
  aReadStr := TextFileReadLn;                             // читаем строку из файла
  vrWrite.Value := StrToInt(aReadStr);                    // переводим строку в целое число и пишем его в переменную
  TextFileClose;


Если Вы работает не с текстовым файлом, а с двоичным (бинарным), то можно сразу писать и читать с нужным типом данных.

Запись целого числа в двоичный файл:
Код
begin
  FileRecreate('MyBinaryFile.bin', '');       // создаем файл
  FileOpen('MyBinaryFile.bin', '');           // открываем
  FileWriteInteger(vrWrite.OriginalAsInt);    // пишем значение переменной, как целое число
  FileClose;
end.

Чтение целого числа из двоичного файла:
Код
begin
  { прерываем скрипт если файл не существует }
  if not FileExists('MyBinaryFile.bin') then
    Exit;

  FileOpen('MyBinaryFile.bin', '');      // открываем файл
  vrWrite.Value := FileReadInteger;      // читаем целое значение
  FileClose;                             // закрываем файл
end.
« Изменён: 15 Марта 2017, 16:34:25 от Simple-Scada »

pan-nn

  • Новичок
  • *
  • Сообщений: 30
    • Просмотр профиля
Re: Запись Integer в файл
« Ответ #2 : 15 Марта 2017, 17:30:51 »
Спасибо за разъяснения.