К какому типу данных относятся текстовые файлов с определенными паттернами для их обработки

Обновлено: 07.07.2024

Занятие 1. Тeкстовые файлы, их описание и основные отличия от типизированных файлов.

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

Во многих версиях языка допускается хранение файлов на диске как символьных данных. При считывании файла в оперативную память машины символы файла преобразуются в тот тип данных, который объявлен в программе. Файлы символьных данных называются текстовыми файлами. Текстовые файлы имеют тип text.

Таким образом, текстовый файл структурно несколько похож на "файл из байтов" (file of byte) с той разницей, что в нем, помимо содержательной информации, встречаются символы специального назначения.

Его можно схематически представить в следующем виде:

Описанная структура текстовых файлов хорошо согласуется с интуитивно понимаемым построением текстовой информации и полностью совпадает со стандартной структурой текстов, принятой в MS-DOS, используемой во многих текстовых редакторах, понимаемой компиляторами с языков программирования и т.д.

С каждым файлом на диске должна быть связана файловая переменная, которая описывается в соответствии с типом файла на диске. Представителем же текстового файла в Pascal-программе является переменная файлового типа, которая должна быть описана с указанием стандартного типа text:

Примечание . Слово text не является зарезервированным словом, а считается идентификатором стандартного типа, наряду с идентификаторами integer, real и т.д.

Обращение к файлу в дальнейшем идёт через файловую переменную.

Далее доступ к файлу требуется открыть. Открыть любой файл можно на чтение и на запись. Для этого существуют процедуры reset, rewrite.

К примеру, пусть на диске создан текстовой файл text.txt.

Для Turbo Pascal описание и связывание файловой переменной f с файлом text.txt, будет выглядеть так :

assign ( f , ' d :\ tp 7\ bin \ text . txt ');

assign([файл. пер. ], [полный путь до файла на диске])–связывает файл на диске с файловой переменной f типа текст.

Примечание . Процедура assign не должна использоваться для открытого файла.

Когда имя файла на диске не указывается, то параметр f оказывается связанным со стандартным вводом/выводом. Если присвоено пустое имя, то после обращения к reset(f) f будет указывать на стандартный файл ввода, а после обращения к rewrite(f) f будет указывать на стандартный файл вывода.

reset([ файловая переменная ]); –открывает файл на чтение.

Ввод-вывод для текстовых файлов подчиняется тем же общим правилам, что и для обычных типизированных файлов; однако имеется несколько важных особенностей.

Во-первых, для одного текстового файла нельзя одновременно производить операции и ввода, и вывода. Это означает, что после открытия текстового файла процедурой reset возможно только чтение информации из файла, после процедуры rewrite – только запись в файл.

Во-вторых, обмены с текстовыми файлами всегда являются строго последовательными, то есть после чтения из файла элемента с порядковым номером N следующая операция чтения даст элемент с номером N+1. Иными словами, прямой доступ к любому элементу текстового файла невозможен; для текстовых файлов не допускаются вызовы Seek, FilePos, FileSize.

Под чтением файла понимают ввод данных из внешнего файла, находящегося на диске, в оперативную память машины. Данные файла становятся доступными программе. Внешний файл, из которого читаются данные, часто называют входным файлом .

Базовой техникой обменов с текстовыми файлами является посимвольный ввод-вывод. При этом производится чтение или запись всех символов, как информационных, так и специальных.

Покажем простую программу, выполняющую чтение некоторого текста. Эта программа выводит на экран последовательность кодов символов, составляющих файл text.txt.

while not Eof(f) do

Задание . Наберите текст программы и запустите программу на выполнение. Просмотрите результат работы программы. Найдите выведенные на экран коды специальных символов.

Еще одной особенностью работы с текстовыми файлами является возможность непосредственных обменов значениями различных базовых типов (для обычных типизированных файлов тип параметров read и write должен совпадать с базовым типом файла). Так, в текстовый файл можно записать6 например, целое или вещественное число. При этом его внутреннее представление будет автоматически преобразовано в строчку символов, образующих изображение этого числа.

Рассмотрите простую программу, выполняющую чтение из текстового файла целых чисел и вывод на печать только четных чисел.

while not Eof(f) do

Задание . Напишите программу, с помощью которой можно сформировать текстовый файл, содержащий

- значения целого типа;

- значения вещественного типа;

- значения булева типа.

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

Program TextFile 3;

for i := 8 to 12 do

Задание . Наберите программу, дополните ее выводом содержимого текстового файла на экран. Проанализируйте полученные результаты выполнения программы.

Управление размещением значений в текстовых файлах очень удобно при формировании структурированных файлов (списков, таблиц и т.п.), так как если изображение значения меньше размера поля, то оно всегда "прижимается" к его правому краю.

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

Занятие 2. Способы обмена с текстовыми файлами.

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

Операции чтения из файла

reset(f) - открывает существующий файл на чтение. Файловая переменная должна быть связана с внешним файлом с помощью процедуры assign.

Если существующий файл уже открыт, то он закрывается, а затем открывается вновь. Текущая позиция в файле устанавливается на начало файла.

Если f было присвоено пустое имя (например, assign((f),' '), то после обращения к процедуре Rezet(f) будет ссылкой на стандартный файл ввода (канал 0).

Текстовой файл становится доступным только по чтению.

При указании директивы компилятора функция IoResult будет возвращать значение 0 в том случае, если операция завершилась успешно, и ненулевой код ошибки в противном случае.

readln([f : text],[v 1 ,v 2 . v n ]) – выполняет процедуру read, затем переходит к следующей строке файла.

Процедура readln является расширением процедуры read и определена для текстовых файлов. Вызов readln(f) без параметров приводит к перемещению текущей позиции файла на начало следующей строки, если она имеется, в противном случае происходит переход к концу файла. Процедура readln без параметров полностью соответствует стандартному вводу.

При указании директивы компилятора функция IoResult будет возвращать значение 0 в том случае, если операция завершилась успешно, и ненулевой код ошибки в противном случае.

Примечание : Функция работает только для тектовых файлов, включая стандартный ввод. Файл должен быть открыт для ввода.

Процедура readln является очень удобным аналогом read. В случае использования readln после чтения из файла очередной порции символов (и, быть может, преобразования их в значение подходящего типа) текущий указатель файла будет перемещен на начало его следующей строки. Иными словами, часть строки после прочитанного значения будет пропущена.

Очень часто используется следующий способ чтения из текстового файла. В качестве параметра процедуры readln задается переменная типа string; в этом случае вся очередная строка файла целиком считывается в поданную переменную, длина которой автоматически устанавливается равной длине считанной строки. Полученная из файла строка далее может быть обработана так, как это необходимо. Важно отметить, что при таком способе производится чтение только "значащих" символов строки; завершающиеся символы в данном случае играют роль межстрочных разделителей и не считываются в строковую переменную. После чтения строки текущий указатель файла устанавливается на начало следующей строки.

Операции записи в файл

rewrite(f) - cоздаёт и открывает новый файл. Файловая переменная должна быть связана с внешним файлом с помощью процедуры assign.

Если внешний файл уже существует, то он удаляется и на его месте создаётся новый пустой файл. Если файл уже открыт, то он закрывается, а затем открывается вновь.Текущая позиция в файле устанавливается на начало файла.

Если f было присвоено пустое имя (например, assign((f),' '), то после обращения к процедуре rewrite(f) будет ссылкой на стандартный файл вывода (канал 1).

Текстовой файл становится доступным только по записи.

write([f : text],[v 1 ,v 2 . v n ]) – записывает одно или более значений из одной или более переменных в текстовой файл.

Если параметр f не указан, то подразумевается использование стандартной файловой переменной Output. Каждый параметр v является вводимым выражением, значение которого должно быть записано в файл. Каждое вводимое выражение должно быть символьного, целого, вещественного, строкового или булевого типа.

Параметр v имеет вид:

<вводимое выражение : мин.размер : десятичных знаков>

Такая запись означает, что мы в файл записываем действительное (не целое) число а, размером 5 знаков, 2 знака под дробную часть.

writeln([f : text],[v1,v2. vn]) – выполняет процедуру write, а затем записывает в файл метку конца строки (перевод строки).

При вызове данной процедуры без параметров writeln(f), в файл записывается метка конца строки. Процедура writeln без параметров полностью соответствует стандартному выводу на экран.

Примечание : файл должен быть открыт для вывода.

Логическая функция Eoln

Часто для обработки текстовых файлов используется специфичная для них функция Eoln, позволяющая определить достигнут ли конец строки. Если достигнут – значение функции равно True, а если нет – False. Таким образом, для анализа конкретных символов строк файла можно применить вложенный цикл типа:

while not Eof(NameFale) do

while not Eoln(NameFale) do

Процедура открытия файла для дополнения

append(f : Тext) – процедура открывает существующий файл для присоединения. Если файл уже открыт, то он сначала закрывается, а затем открывается заново. Текущая позиция устанавливается на конец файла.

Если в последнем блоке файла размером 128 байтов присутствует символ Сtrl+Z (26 в коде ASCII), то текущая позиция устанавливается в файле таким образом, что при записи первым в блоке будет "затираться" символ Сtrl+Z.

Если переменной f было присвоено пустое имя assign(f,' '), то после обращения к процедуре append f будет указывать на стандартный выходной файл.

После обращения к append файл f становится доступным только по записи и Eof(f) принимает всегда значение True(истина).

Рассмотрите несколько примеров простых программ.

Program TextFile 4;

Put1, Put2, d: string;

assign ( t , Put 2);

while Not Eof(f) Do

while Not Eoln(f) do

while Not Eof(f) d o

for i := 1 to Length(s) do

assign ( f , ' text . txt ');

writeln(f, 'Исходный текст');

writeln(f, 'Добавляемый текст');

Задачи для самостоятельной работы

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

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

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

4. Создать текстовый файл, содержащий произвольное количество символов. Длину каждой строки должен определять пользователь. Просчитать количество цифр и дописать в файл полученную информацию.

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

Занятие 3. Стандартные текстовые файлы Input и Output. Примеры задач

В Паскале существуют два стандартных текстовых файла Input и Output. Эти файлы считаются известными в любой Pascal-программе (иными словами, они описаны в стандартном модуле System). Они обозначают (по терминологии MS-DOS) соответственно стандартный файл ввода и стандартный файл вывода. Обычно эти стандартные файлы связаны с конкретными физическими устройствами компьютера. Так, файловая переменная Input связана с клавиатурой, файловая переменная Output – с экраном дисплея. эти файлы считаются заранее открытыми, а соответствующие идентификаторы можно использовать в операциях ввода-вывода.

Рассмотрим, например, следующий оператор:

writeln (Output, 'Результат равен ', (X+Y)*2)

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

Аналогично, оператор read (Input, X1, X2); будет выполняться таким образом: система перейдет в состояние ожидания ввода с клавиатуры двух значений. Типы вводимых значений должны совпадать с типами переменных Х1 и Х2. Эти значения при вводе должны отделяться друг от друга одним или несколькими пробелами, а ввод должен быть завершен нажатием клавиши Enter. В процессе ввода значений набираемые на клавиатуре символы отображаются на экране. После нажатия Enter введенные значения будут присвоены переменным Х1 и Х2, и выполнение программы будет продолжено.

Для стандартных файлов Input и Output допускается сокращенная форма записи операций ввода-вывода. Так, если в процедурах read и readln первый параметр опущен, то по умолчанию подразумевается файл Input. Аналогично, отсутствие в процедурах write и writeln первого параметра означает вывод в стандартный файл Output. Вывод в стандартный файл Output используется очень часто – всегда, когда необходимо выдать некоторую информацию из программы на экран.

В соответствии с общими правилами MS-DOS стандартные файлы ввода-вывода могут быть "переназначены", то есть связаны с другими физическими устройствами или дисковыми файлами. Простейшим способом переназначения является использование для этой цели процедуры assign, например,

assign ( Output ,' MyFile . out ')

После выполнения такого оператора стандартный файл вывода будет переназначен, то есть файловая переменная Output будет связана с дисковым файлом MyFile.out из текущего каталога. Все операции вывода, явно или неявно работающие с файлом Output, будут выводить информацию в указанный дисковый файл.

Задание . Рассмотрите предложенные программы, наберите их на компьютере, выделите необходимые части алгоритма в подпрограммы, сформулируйте решаемые ими задачи, дополните необходимыми операторами и комментарием.

Примечание . Если Вы можете решить выше поставленные задачи устно, то поставьте в известность учителя и приготовьтесь к ответу.

Файл – последовательность элементов одного типа, которой присвоено общее имя.

Количество элементов файла заранее не определяется. Максимальный размер файла, размещенного во внешней памяти, ограничивается лишь техническими возможностями вычислительной системы.

Различают дисковые файлы и логические устройства.

Дисковый файл представляет собой именованную область внешней памяти на устройстве хранения информации, например, винчестере.

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

  • CON– консоль: при выводе данных соответствует экрану, при вводе – клавиатуре;
  • PRN– принтер;

Доступ к элементу файла осуществляется через указатель файла. При выполнении операции чтения или записи указатель автоматически перемещается на следующий элемент.

Переход по элементам файла

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

В зависимости от способа представления информации различают три типа файлов:

  • типизированные файлы;
  • текстовые файлы;
  • нетипизированные файлы.

Текстовые файлы – это файлы, содержащие строки переменной длины. Доступ к каждой строке возможен лишь последовательно, начиная с первой. Одновременная запись и чтение запрещены.

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

Типизированные файлы

Типизированный файл – файл с объявленным типом элементов, т.е. файл с одной и той же структурой элементов.

В языке Турбо Паскаль ввод-вывод информации осуществляется через файловые переменные. Файловая переменная типизированного файла объявляется так:

1. Объявления в разделе переменных

Var
<имя файла>:file of ;<тип элементов>

2. Объявления в разделе типов

Работа с файлом включает:

  • инициализацию файловой переменной – установление связи файловой переменной с файлом операционной системы;
  • открытие файла – подготовку файла для выполнения операций ввода/ вывода;
  • обработку элементов файла – выполнение операций ввода-вывода;
  • закрытие файла.

Инициализация файловой переменной

В программе файл является переменной, называемой файловой переменной. Для установления связи между файловой переменной в программе и файлом операционной системы, используется стандартная процедура Assign .

Формат процедуры:

Assign(<имя файловой переменной>,<имя внешнего файла>),

здесь: имя внешнего файла – имя дискового файла, расположенного на внешнем носителе. Если файл находится в текущем каталоге, то достаточно указать имя файла и его расширение. В противном случае необходимо указать полное имя файла.

Пример

Установление соответствия между файловой переменной и дисковым файлом операционной системы означает, что все операции, выполняемые над файловой переменной, например, над f , будут выполняться над файлом, хранящимся на диске d:\ и, имеющем имя ‘data.txt’ .

Рассмотрим основные операции, выполняемые с фалами:

  • чтение файла,
  • запись в файл,
  • добавление элементов в файл.

Чтение файла

Под чтением файла понимается копирование данных из дискового файла в файловую переменную, после чего данные становятся доступными для обработки.

Для чтения файла необходимо выполнить следующие действия:

1. Открыть файл для чтения

Формат процедуры:

Reset(<имя файловой переменной>);

При выполнении этой процедуры дисковый файл подготавливается к чтению. В результате специальная переменная – указатель, связанная с этим файлом, будет указывать на начало файла, т.е. на элемент с порядковым номером 0 .

2. Прочитать данные из файла в файловую переменную

Формат процедуры:

Read(<имя файловой переменной> <переменная>);

Файловая переменная и файл должны быть одного типа. Чтение файла происходит последовательно. После чтения текущего элемента, указатель автоматически перемещается на следующий элемент. В любой момент времени становиться доступен лишь элемент файла, на котором установлен указатель файла.

3. Закрыть файл

Формат процедуры:

Close(<имя файловой переменной>);

Дисковые операции (чтение-запись на диск) относиться к достаточно медленным операциям. Поэтому для повышения быстродействия обмен данными между дисковым файлом и файловой переменной происходит через специальный буфер. При записи в файл данные сначала помещаются в буфер и только после заполнения буфера записываются в файл. В момент закрытия файла часть данных может оказаться в буфере, поэтому процедура Close принудительно обеспечивает вывод оставшихся элементов из буфера в файл. Таким образом, процедура Close обеспечивает закрытие файла без потери данных. Связь файловой переменной с файлом при закрытии сохраняется, и при повторном использовании этого же файла, процедуру Assign применять еще раз не требуется.

Общая схема чтения файла:

Reset(<имя файловой переменной>);
Read(<имя файловой переменной>, <переменная>);
Close(<имя файловой переменной>);

Признак конца файла

Поскольку в файле число элементов не задается заранее, то в Турбо Паскале введен признак конца файла EOF – EndOfFile . Это логическая переменная возвращает TRUE – если достигнут конец файла и FALSE – конец файла не достигнут.

Формат процедуры:

EOF(<имя файловой переменной>);

Процедура возвращает:

TRUE (истина) – конец файла,
FALSE (ложь) – конец файла не достигнут .

Для определения конца файла используется оператор цикла

WhileNotEOF(<имя файловой переменной>) do оператор;

ЗАДАЧА 1. Разработать программу, которая выполняет чтение файла, содержащего целые числа.

Запись в файл

Для записи необходимо выполнить следующие действия:

1. Открыть файл для записи

Формат процедуры:

ReWrite (<имя файловой переменной>);

2. Записать данные в файл, при этом данные записываются поэлементно

Формат процедуры:

Write(<имя файловой переменной>, <элемент>);

3. Закрыть файл

После работы с файлом его закрытие обязательно.

Общая схема записи в файл:

ReWrite (<имя файловой переменной>);
Write(<имя файловой переменной>, <элемент>);
Close(<имя файловой переменной>);

ЗАДАЧА 2. Разработать программу, которая записывает в файл целые числа. Ввод чисел выполнить с клавиатуры.

Добавление элементов в файл

Для добавления элементов в файл необходимо выполнить следующие действия:

1. Открыть файл для чтения

Формат процедуры:

Reset(<имя файловой переменной>);

2. Переместить указатель в конец файла

Для перемещения указателя воспользуемся процедурой Seek .Процедура Seek(<имя файловой переменной>, N) перемещает текущий указатель на N-й элемент. Номер последнего элемента N в файле можно определить с помощью функции

N = Filesize(<имя файловой переменной>),

где N - количество элементов в файле.

В этом случае, функция Seek может быть записана так:

Формат функции:

Seek(<имя ф.переменной>,Filesize(<имя ф.переменной>));

3. Выполнить запись элемента

Формат процедуры:

Write(<имя файловой переменной>, <элемент>);

4. Закрыть файл

Формат процедуры:

Close(<имя файловой переменной>);

Общие характеристики файловых процедур

1. После выполнения процедур открытия файла для чтения, записи ( Reset, Rewrite ) указатель установлен на первый элемент файла (элемент с номером 0 ).

21. Тип данных файл. Виды файлов. Работа с текстовыми файлами.

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

Текстовый файл можно рассматривать как последовательность символов, разбитую на строки длиной от 0 до 256 символов. Текстовый файл - это файл, компонентами которого являются символьные строки переменной длины, заканчивающиеся специальным маркером конца строки Для описания используется стандартный тип Text:

К типизированным файлам относятся файлы строго определенного типа. Чаще всего это файлы, состоящие из записей. Они применяются для создания различных баз данных.Типизированный файл - это файл, все компоненты которого одного типа, заданного при объявлении файловой переменной. Компоненты файла хранятся на диске во внутреннем (двоичном) формате и нумеруются с 0. Если посмотреть такой файл любым текстовым редактором, то можно распознать только символьную информацию, на месте же чисел в файле будут располагаться пробелы или символы псевдографики. Стандартное задание в программе такой файловой переменной осуществляется следующим образом:


type
FileRec = record
end;

var F : file of FileRec;

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

var UntypedFile : File;

Работа с текстовыми файлами.

Для работы с текстовыми файлами используют специальные процедуры
и функции.

Числовая информация – не единственный тип данных , обрабатываемых с помощью ЭВМ. Очень большой пласт прикладных задач связан с обработкой текстовой информации. К ним относятся текстовые редакторы, всевозможные переводчики, компиляторы алгоритмических языков, информационно-справочные системы, системы обработки экономических данных и многие другие.

Языки C, C++ разделяют текстовые данные на примитивы, значением которых являются одиночные символы ( символьные данные ) и последовательности примитивов в виде цепочек символов , завершающихся установленным признаком конца ( строковые данные ). Символьные данные могут быть представлены как скалярными величинами (символьные константы , символьные переменные), так и массивами таких данных. Строковые данные наряду с константами и скалярными переменными тоже могут быть организованы в массивы, напоминающие привычные текстовые документы.

В ранних версиях систем программирования для кодировки символьных данных использовались так называемые кодовые страницы ( code page ). С одной из таких кодовых страниц в свое время выступила фирма IBM , предложившая в качестве стандарта 7-битовую кодировку управляющих и отображаемых символов на компьютерах серии IBM /360. Однако с развитием средств обработки символьной информации 128 различных кодов оказалось недостаточно, и для подключения кодов с символами национальных алфавитов производители средств вычислительной техники соответствующих стран начали подключать к стандарту IBM дополнительные наборы символов. Для кодировки новых расширений потребовался еще один двоичный разряд, и так возникли сменные наборы, дополнявшие устоявшуюся таблицу IBM . Каждая страна или группа стран построила свой уникальный набор из 256 символов, получивший название кодовой страницы. Чтобы отличать эти страницы друг от друга, им присвоили номера. Пользователям нашей страны досталась кодовая страница с номером 866. Довольно много хлопот разнообразие этих страниц вызывало у производителей программных продуктов, учитывающих специфику национальных алфавитов. Трудно приходилось и производителям устройств вывода (принтеры, плоттеры), т.к. в их конструкциях предусматривались аппаратно зашитые таблицы шрифтов.

Системы программирования BC 3.1 и BCB ориентированы на однобайтовую кодировку символьных данных на базе кодовых страниц ASCII . Сложность заключается в том, что под управлением MS-DOS в нашей стране используется кодовая страница с номером 866, а в операционных системах Windows 98/NT/2000/XP отечественная кодовая страница имеет номер 1251. У обеих кодовых страниц первые половины идентичны стандарту IBM . Здесь находятся коды управляющих символов ( группа кодов от 0x00 до 0x1F ), различные разделители (точки, запятые, скобки и т.п.) и знаки операций, большие и малые буквы латинского алфавита. А вот вторые половины этих кодовых страниц устроены по -разному и из-за этого тексты на русском языке, подготовленные в среде Windows , отображаются консольными приложениями BCB в виде некоторой абракадабры. Это явление не наблюдалось в среде BC 3.1, т.к. там и набор программы и ее выполнение происходят в рамках одной и той же кодовой страницы.

4.1. Символьные данные и их представление в памяти ЭВМ

Одиночным символьным данным (константам и переменным) в оперативной памяти ЭВМ выделяется по одному байту, в которых хранятся соответствующие значения – числовые коды конкретных символов в соответствии с их кодировкой в той или иной странице.

Чтобы познакомиться с 866-й кодовой страницей предлагается выполнить следующую программу:

Читайте также: