привет мир и вы пытаетесь прочесть это как две отдельные строки, как в фрагменте программы: var el,82 : string, MyTextFile : Text;
begin
Assign (MyTextFile, 'MYFILE.TXT');
Reset (MyTextFile);

Read (MyTextFile, el, в2) ,

То в результате вы получите si, содержшую строку 'hello world', и s2, не содфжащую ничего вообще.

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

var Stringl : String[10]; Strxng2 : String(12];

Если вы хотите прочесть из текстового файла отдельные слова, вь" должны прочесть каждую строку файла и разбить эту строку на отдельные слова, либо прочесть файл по-символьно и выполнить ряд проверок для выявления наличия ограничителей слов после каждого символа. Да, Delphi оставляет на нашу долю немного "реального программирования".

Конец строки и конец файла

Две стандартные процедуры, Eoln и Eof, позволяют вам определить, что вы достигли конца строки или конца файла при чтении текстового файла. Eoln возвращает True, если следующая операция чтения натолкнется на конец строки, a Eof возврацает True, если следующая операция чтения натолкнется на конец файла. Eof используется почти каждой программой, читающей текстовые файлы.

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

15 132 12

20 20 100 97 36 48 79 620 540

Это означает, что в первую неделю вы выезжали три дня, во вторую неделю ездили каждый день, а в третью неделю ездили только два дня. Чтобы подсчитать общее число миль, проеханных за неделю (или за день), вам необходимо прочитать каждое число и отследить, сколько чисел вы считали для каждой строки. Процедура на Pascal, делающая это, показана в Листинге 11.1.

ЛИСТИНГ 11.1 Процедура Pascal для подсчета общего количества миль

Procedure ComputeAverageMiles: var TotalMiles : Real; WeekTotal : Real; DayMiles : Real; DaysThisWeek : Integer; TotalDays : Integer; NumberOfWeeks : Integer; MileFile : Text; OutputFile : Text;
begin
{ открывает входной файл } Assign (MileFile, 'miles.txt'); Reset (MileFile);

{ создаёт выходной файл }


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

Программирование в среде 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