Здравствуйте.
При записи целого числа в файл записывается значение с учетом сдвига запятой.
Верно. И как Вы правильно заметили нужно использовать 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.