Специфицирование десятичной точки

Когда вы записываете переменные типа Real (Действительные) вид вывода, весьма вероятно, удивит вас. В отличие от типов Integer (Целые), которые выводятся так, как вы и ожидаете, вещественные числа выводятся с использованием записи, принятой в научных работах. Например, если вы написали"
Write (MyTextFile, 25.1);

содержимым текстового файла должно быть: 2.5100000000Е+01

Эта запись является всего лишь иным представлением числа 25.1. Эта запись говорит "умножить 2.5100000000 на 10 в первой степени". "10 в первой степени" сводится к 10, мы приходим к 2.51 умноженным на 10, или 25.1. Все это правильно и хорошо, но ваш бос, вероятно, не захочит узнать, что поступления последней недели составили 5.6892700000Е+03 долларов.

К счастью, вы можете заставить Delphi выводить значения Real в более стандартной записи, чтобы 25.1 действительно выводилось как 25.1. Вы делаете это, специфицируя ширину и число десятичных разрядов для вывода. Например, если вы хотите, чтобы 25.1 вывелось с двумя десятичными разрядами в колонке шириной в 10 цифр, вы должны написать:

Write (25.1:10:2);

Все это может показаться знакомым - это тот же механизм форматирования, который используется в процедуре Str, который Джефф описал в Главе 6.

Чтение текстовых файлов

Считывание информации из текстовых файлов очень просто, хотя и занимает некоторое время при работе со строками. Две стандартные процедуры Read и Read 1л выполняют большую часть работы, а стандартные функции Eoln (end of line - конец строки) и Eof (end of file - конец файла) помагают при этом. Типы данных, которые могут быть считаны при помощи Read и ReadLn те же, что могут быть записаны посредством Write и WriteLn.

Самыми первыми типами информации, читавшимися из текстовые файлов, были целый или действительный типы. Например, если у вас имеется текстовый файл, содержащий три числа в одной строке, на подобие следующего:

100 200 300

вы можете прочестьих одним оператором, вроде этого:

Read (MyTextFilw, Number1, Number2, Number3);

либо отдельными операторами Read, вроде следующих:

Read (MyTextFile, Number1); Read (MyTextFile, Number2); Read (MyTextFile, Number3);

В каждом случае, полагая, что три переменные являются переменным числовых типов, они будут содержать 100,200 и 300, соответственно.

Read и ReadLn предполагают, что числа, которые должны быть считаны из текстового файла, разделяются одним или более пробелом, но не запятыми, двоеточиями, или какими-либо другими символами. Если они наталкиваются на любой другой символ в то время, как ищут число, они прекращают чтение и выдают ошибку считывания. Таким образом, если бы у вас имелись следующие данные:

100 200, 300

в вашем файле, Read получила бы первое число, 100, но получила бы ошибку, когда попыталась бы преобразовать "200," (включая и запятую) в число.

Как я сказал, чтение строк является несколько более сложным. Read не поддерживает концепцию разделителя полей при работе со строками, поэтому разделение двух строк в файле одним или более пробелом не является достаточной гарантией того, что Read прочтет их снова в виде двух отдельных строк. Например, если у вас в вашем файле имеется следующая строка текста:


⇐ Предыдущая страница| |Следующая страница ⇒

Программирование в среде Delphi



Новости за месяц

  • Декабрь
    2021
  • Пн
  • Вт
  • Ср
  • Чт
  • Пт
  • Сб
  • Вс
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31