Олег Деревенец - Песни о Паскале
- Название:Песни о Паскале
- Автор:
- Жанр:
- Издательство:неизвестно
- Год:неизвестен
- ISBN:нет данных
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Олег Деревенец - Песни о Паскале краткое содержание
Песни о Паскале - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
Разработчики IDE Pascal ABCNet стремились, очевидно, к совместимости её со «стандартной» IDE Borland Pascal в той мере, насколько это возможно. Но объектная технология «точка Net» диктует своё, – полной совместимости не получилось.

Так, например, в данной IDE не существует встроенной функции Assigned. Но вы можете написать её сами.
function Assigned (p: pointer): boolean;
begin
Assigned:= p <> nil
end;
Ниже перечислены другие особенности Pascal ABCNet, которые следует учесть при переделке примеров данной книги.
• Отсутствует процедура FillChar. Записи и массивы нужно заполнять явным образом.
• Нельзя назначать файловым переменным пустое имя, связывая их, таким образом, с экраном и клавиатурой.
• Под символ отводится не один, а два байта (используется UNICODE).
• Строки являются объектами, поэтому доступ к нулевому элементу (байту длины) невозможен.
Приложение Г
Зарезервированные слова
Ключевые слова, которые нельзя применять по иному назначению.
Ключевое слово | Назначение |
AND | Операция логического умножения «И» |
ARRAY | Объявление массива |
ASM | Начало блока инструкций на ассемблере |
BEGIN | Начало блока операторов |
CASE | Начало оператора множественного выбора |
CONST | Начало секции объявления констант |
CONSTRUCTOR | Объявление конструктора объекта |
DESTRUCTOR | Объявление деструктора объекта |
DIV | Операция целочисленного деления |
DO | Элемент операторов FOR, WITH, WHILE |
DOWNTO | Элемент оператора цикла FOR-DOWNTO-DO |
ELSE | Элемент условных операторов IF, CASE |
END | Завершение блоков BEGIN-END, CASE-END, ASM-END, RECORD-END |
EXPORTS | Объявление списка экспорта для DLL |
FALSE | Логическое значение «ЛОЖЬ» |
FILE | Тип файловой переменной |
FOR | Элемент оператора цикла FOR-TO-DO |
FUNCTION | Объявление функции |
GOTO | Безусловный переход на метку |
IF | Элемент условного оператора IF-THEN-ELSE |
IMPLEMENTATION | Объявление секции реализации модуля |
IN | Проверка принадлежности элемента множеству |
INHERITED | Квалификатор унаследованного метода объекта |
INLINE | Оператор вставки ассемблерных кодов |
INTERFACE | Объявление секции интерфейса модуля |
LABEL | Объявление меток |
LIBRARY | Объявление библиотечного модуля |
MOD | Операция нахождения остатка от деления |
NIL | Пустой указатель |
NOT | Логическое отрицание «НЕ» |
OBJECT | Объявление типа «объект» |
OF | Элемент оператора CASE-OF-END |
OR | Логическое сложение «ИЛИ» |
PACKED | Объявление упакованного массива (устарело) |
PROCEDURE | Объявление процедуры |
PROGRAM | Объявление программы |
RECORD | Начало объявления записи RECORD-END |
REPEAT | Элемент оператора цикла с проверкой в конце REPEAT-UNTIL |
SET | Объявление множества SET OF |
SHL | Операция сдвига влево |
SHR | Операция сдвига вправо |
STRING | Объявление строкового типа |
THEN | Элемент условного оператора IF-THEN-ELSE |
TO | Элемент оператора цикла FOR-TO-DO |
TRUE | Логическое значение «ИСТИНА» |
TYPE | Начало секции объявления типов |
UNIT | Объявление имени модуля |
UNTIL | Элемент оператора цикла с проверкой в конце REPEAT-UNTIL |
USES | Объявление внешних модулей |
VAR | Начало секции объявления переменных |
WHILE | Элемент оператора цикла с проверкой в начале WHILE-DO |
WITH | Элемент оператора раскрытия записи WITH-DO |
XOR | Логическое сравнение («ИСКЛЮЧАЮЩЕЕ ИЛИ» ) |
Директивы, имена которых не рекомендуется использовать по иному назначению.
Директива | Назначение в Borland Pascal |
ABSOLUTE | Назначение переменной абсолютного адреса в памяти |
ASSEMBLER | Объявление процедуры на ассемблере |
EXPORT | Список экспорта |
EXTERNAL | Объявление внешних имен для ассемблера |
FAR | Спецификатор процедуры с «дальним» вызовом |
FORWARD | Предварительное определение процедуры или функции |
INDEX | Указание индекса процедуры в DLL |
INTERRUPT | Спецификатор процедуры обработки прерывания |
NAME | Импорт процедуры из DLL по имени |
NEAR | Спецификатор процедуры с «ближним» вызовом |
PRIVATE | Начало секции приватных полей объекта |
PUBLIC | Начало секции публичных полей объекта |
RESIDENT | Спецификатор резидентного элемента DLL |
VIRTUAL | Спецификатор виртуального метода объекта |
Приложение Д
Ошибки компиляции
Номер ошибки | Сообщение | Пояснение |
1 | Out of memory | Недостаточно оперативной памяти для работы компилятора. Воспользуйтесь средствами расширения оперативной памяти MS–DOS. |
2 | Identifier expected | В данном месте программы должен находиться идентификатор. Возможно, имеется попытка использовать зарезервированное слово. |
3 | Unknown identifier | Неизвестный (не определенный ранее) идентификатор. |
4 | Duplicate identifier | Повторное определение идентификатора. |
5 | Syntax error | Синтаксическая ошибка (нарушены правила написания предложения). |
6 | Error in real constant | Ошибка в изображении вещественного числа. |
7 | Error in integer constant | Ошибка в изображении целого числа. |
8 | String constant exceeds line | Строковая константа превышает допустимый размер (255 символов). Вероятно, пропущена закрывающая кавычка. |
10 | Unexpected end of file | Неожиданное завершение программы. Вероятно, не сбалансировано число зарезервированных слов begin и end, неправильно оформлен файл. |
11 | Line too long | Компилируемая строка программы превышает 127 символов. |
12 | Type identifier expected | В данном месте программы требуется идентификатор типа. |
13 | Too many open files | Попытка открыть в среде программирования количество файлов больше, чем допускается в операционной системе. Максимальное число одновременно открываемых файлов определяется строкой FILES=NN в файле CONFIG.SYS. |
14 | Invalid file name | Неверный путь или имя файла. |
15 | File not found | Файл не найден ни в текущем, ни в заданном каталоге. |
16 | Disk full | Недостаточно места на диске, куда записывается информация. |
17 | Invalid compiler directive | Ошибка в директиве компилятора, или она используется в недопустимом месте. |
18 | Too many files | Слишком много файлов используется при компиляции. |
19 | Undefined type in pointer def | При определении типа-указателя используется неизвестный базовый тип. |
20 | Variable identifier expected | В данном месте программы должен быть идентификатор переменной. |
21 | Error in type | Ошибка в определении типа. |
22 | Structure too large | Размер данных превышает ограничение в 65520 байт. |
23 | Set base type out of range | Тип-множество имеет более 256 элементов или содержит элементы с порядковым номером за пределами 0..255. |
24 | File components may not be files or objects | Компонентами файловой переменной не могут быть файлы или объекты. |
25 | Invalid string length | Неверная длина строки (максимум 255 символов). |
26 | Type mismatch | Несовместимые типы в операциях присваивания, в выражениях или у индекса массива. Тип фактического параметра при обращении к подпрограмме не соответствует типу формального параметра. |
27 | Invalid subrange base type | В типе-диапазоне может использоваться только порядковый тип. |
28 | Lower bound > than upper bound | В типе-диапазоне нижняя граница больше, чем верхняя. |
29 | Ordinal type expected | Здесь может использоваться только порядковый тип. |
30 | Integer constant expected | Здесь можно использовать только константу целого типа. |
31 | Constant expected | Здесь можно использовать только константу. |
32 | Integer or real constant expected | Здесь можно использовать только числовую константу. |
33 | Pointer Type identifier expected | Здесь должен быть указатель. |
34 | Invalid function result type | Недопустимый тип результата функции. |
35 | Label identifier expected | Здесь должен быть идентификатор метки. |
36 | BEGIN expected | Здесь ожидается зарезервированное слово BEGIN. |
37 | END expected | Здесь ожидается зарезервированное слово END. |
38 | Integer expression expected | Выражение должно быть целого типа. |
39 | Ordinal expression expected | Выражение должно быть порядкового типа. |
40 | Boolean expression expected | Выражение должно быть логического типа. |
41 | Operand types do not match | Типы операндов не совместимы друг с другом. |
42 | Error in expression | Ошибка, в выражении (например, пропущен знак операции между операндами). |
43 | Illegal assignment | Неправильно присвоено значение переменной. |
44 | Field identifier expected | Требуется указать поле записи. |
45 | Object file too large | Размер объектного файла превышает 64 кбайта. |
46 | Undefined EXTERN | Не найдена внешняя процедура или функция. |
47 | Invalid object file record | Файл, по-видимому, не является объектным. |
48 | Code segment too large | Размер кодового сегмента превышает 65520 байт. |
49 | Data segment too large | Размер сегмента данных превышает 65520 байт. |
50 | DO expected | Здесь следует поместить зарезервированное слово DO. |
51 | Invalid PUBLIC definition | Неправильное использование директивы PUBLIC в подпрограмме, написанной на ассемблере. |
52 | Invalid EXTRN definition | Неправильное использование директивы EXTRN в подпрограмме, написанной на ассемблере. |
53 | Too many EXTRN definitions | Слишком много директив EXTRN. |
54 | OF expected | Здесь следует поместить зарезервированное слово OF. |
55 | INTERFACE expected | В модуле пропущено зарезервированное слово INTERFACE. |
56 | Invalid relocatable reference | Неправильная перемещаемая ссылка в подпрограмме, написанной на ассемблере. |
57 | THEN expected | Здесь следует поместить зарезервированное слово THEN |
58 | TO or DOWNTO expected | Здесь следует поместить зарезервированное слово TO или DOWNTO |
59 | Undefined forward | Заголовок подпрограммы объявлен с директивой FORWARD, но сама подпрограмма далее не описана. |
61 | Invalid typecast | Неверное приведение типов. При преобразовании типа величины исходного и результирующего типа имеют различные размеры. |
62 | Division by zero | Попытка деления на нуль. |
63 | Invalid file type | Эта процедура работы с файлом не поддерживает данный тип файла. |
64 | Cannot read or write variables of this type | Недопустимый тип параметра у процедур Read, Readln, Write, Writeln. |
65 | Pointer variable expected | Эта переменная должна быть указателем. |
66 | String variable expected | Эта переменная должна иметь строковый тип. |
67 | String expression expected | Эта выражение должно иметь строковый тип. |
68 | Circular unit reference | Циклическая ссылка модулей друг на друга. Необходимо поместить ссылку на модули (USES) в секции IMPLEMENTATION. |
69 | Unit name mismatch | Имена модуля и файла, в котором он находится, не совпадают. |
70 | Unit version mismatch | Один или несколько используемых модулей изменены после их компиляции (несоответствие версий модулей). Необходимо выполнить их повторную компиляцию. |
71 | Internal stack overflow | Внутренний стек компилятора переполнен из-за глубокой вложенности операторов. |
72 | Unit file format error | Ошибка в формате скомпилированного модуля. Возможно, он был скомпилирован предыдущей версией компилятора. |
73 | Implementation expected | Пропущено объявление исполнительной части модуля. |
74 | Constant and case types don't match | Недопустимое значение константы. |
75 | Record or object variable expected | Переменная должна иметь тип записи или объекта. |
76 | Constant out of range | Используемая константа имеет недопустимое значение. |
77 | File variable expected | Эта переменная должна быть файлового типа. |
78 | Pointer expression expected | Это выражение должно иметь тип указателя. |
79 | Integer or real expression expected | Это выражение должно быть числовым. |
80 | Label not within current block | Метка находится за пределами данного блока. |
81 | Label already defined | Повторное использование метки. |
82 | Undefined label in preceding stmt part | Метка объявлена, но ни один оператор ею не помечен. |
83 | Invalid @ argument | Неверный аргумент у операции взятия адреса @. |
84 | UNIT expected | В модуле пропущено зарезервированное слово Unit. |
85 | ";" expected | Здесь пропущена точка с запятой. |
86 | ":" expected | Здесь пропущено двоеточие. |
87 | "," expected | Здесь пропущена запятая. |
88 | "(" expected | Здесь пропущена открывающая круглая скобка. |
89 | ")" expected | Здесь пропущена закрывающая круглая скобка. |
90 | "=" expected | Здесь пропущен знак равенства. |
91 | ":=" expected | Здесь пропущен знак присваивания. |
92 | "[" or "(." expected | Здесь пропущена открывающая квадратная скобка или скобка с точкой. |
93 | "]" or ".)" expected | Здесь пропущена закрывающая квадратная скобка или скобка с точкой. |
94 | "." expected | Здесь пропущена точка. |
95 | ".." expected | Здесь пропущены две точки. |
96 | Too many variables | Размер глобальных или локальных переменных подпрограммы превышает 64Кбайт. |
97 | Invalid FOR control variable | Неправильная переменная цикла FOR. |
98 | Integer variable expected | Здесь должна быть переменная целого типа. |
99 | Files types are not allowed here | Файловый или процедурный тип здесь не допускается. |
100 | String length mismatch | Длина строковой константы не соответствует размеру массива символов. |
101 | Invalid ordering of fields | Порядок следования полей в типизированных константах типов записи или объекта должен соответствовать порядку их следования при объявлении типа. |
102 | String constant expected | Здесь должна быть строковая константа. |
103 | Integer or real variable expected | Здесь должна быть числовая переменная целого или вещественной типа. |
104 | Ordinal variable expected | Здесь должна быть переменная порядкового типа. |
105 | INLINE error | Ошибка в подпрограмме с директивой Inline. |
106 | Character expression expected | Здесь должно быть выражение символьного типа. |
107 | Too many relocation items | Главная программа слишком велика. Следует выделить часть её в подпрограммы. |
108 | Overflow in arithmetic operation | Переполнение при выполнении арифметической операции с числами целого типа. |
109 | No enclosing For, While or Repeat statement | Стандартные процедуры Break или Continue используются вне циклов For, While или Repeat. |
110 | Cannot run a unit | Программный модуль выполнить нельзя, необходимо написать программу, вызывающую этот модуль. |
111 | Compilation aborted | Компиляция прервана пользователем |
112 | CASE constant out of range | Значение константы в операторе CASE вышло за пределы от -32768 до 32767. |
113 | Error in statement | Ошибка в операторе. |
114 | Cannot call an interrupt procedure | Нельзя непосредственно вызвать процедуру обработки прерывания. |
116 | Must be in 8087 mode to compile | Типы Single, Double, Extended и Comp можно использовать только при наличии арифметического сопроцессора. |
117 | Target address not found | При использовании команды меню «Search | Find error» нельзя найти оператор для заданного адреса. |
118 | Include files are not allowed here | В данном месте нельзя использовать файл, подключаемый директивой {$I filename}. Оператор должен полностью находиться в одном файле. |
119 | No inherited methods are accessible here | Зарезервированное слово inherited использовано за пределами метода объекта или внутри метода объекта, у которого нет предков. |
121 | Invalid qualifier | Неправильный квалификатор, попытка задать индекс у параметра, не являющегося массивом. |
122 | Invalid variable reference | Неправильная ссылка на переменную, вероятно, не разыменован указатель. |
123 | Too many symbols | Символические имена программы занимают больше, чем 64 Кбайт. Следует попробовать разделить программу на части. |
124 | Statement part too large | Блок программы занимает более 24 Кбайт. Необходимо разбить его на процедуры и функции. |
126 | Files must be var parameters | Файловую переменную можно передавать в подпрограмму только по ссылке VAR. |
127 | Too many conditional symbols | Слишком много символов у параметра условной компиляции. |
128 | Misplaced conditional directive | Пропущена часть директивы условной компиляции. |
130 | Error in initial conditional defines | Ошибка в директиве условной компиляции |
131 | Header does not match previous definition | Заголовок процедуры не соответствует заголовку, объявленному с директивой FORWARD, или заготовку в интерфейсной части модуля. |
133 | Cannot evaluate this expression | Нельзя вычислить константное выражение или выражение, используемое в окне отладки. |
134 | Expression incorrectly terminated | Неправильно завершено выражение. |
135 | Invalid format specifier | Неправильная спецификация формата. |
136 | Invalid indirect reference | Неправильная косвенная ссылка. |
137 | Structured variables are not allowed here | Недопустимая операция над структурированными данными. |
138 | Cannot evaluate without System unit | В библиотечном файле Turbo.tpl отсутствует модуль System. |
139 | Cannot access this symbol | Нет доступа к этому символу. |
140 | Invalid floating-point operation | Переполнение при операциях с вещественными числами или деление на ноль. |
141 | Cannot compile overlays to memory | Программа, использующая оверлеи, должна быть скомпилирована на диск. |
142 | Pointer or procedural variable expected | Здесь должен быть указатель или переменная процедурного типа. |
143 | Invalid procedure or function reference | Неправильный вызов процедуры или функции. Возможно, её требуется скомпилировать в режиме {$F+}. |
144 | Cannot overlay this unit | Попытка использовать модуль в оверлейной программе, который не скомпилирован с директивой {$O+}. |
146 | File access denied | Неправильное обращение к файлу (например, запись в файл, доступный только для чтения, или используется имя каталога, а не файл). |
147 | Object type expected | Здесь должна быть переменная типа объект. |
148 | Local object types are not allowed | Нельзя определять переменную типа объекта внутри подпрограммы (локально). |
149 | Virtual expected | Этот метод должен быть виртуальным. |
150 | Method identifier expected | Здесь должен быть идентификатор метода. |
151 | Virtual constructors are not allowed | Конструктор не может быть виртуальным. |
152 | Constructor identifier expected | Здесь должен быть идентификатор конструктора. |
153 | Destructor identifier expected | Здесь должен быть идентификатор деструктора. |
154 | Fail only allowed within constructors | Процедура Fail вызвана не из конструктора, что недопустимо. |
155 | Invalid combination of opcode and operands | Неправильный набор операндов у команды ассемблера. |
156 | Memory reference expected | В команде ассемблера должна быть ссылка на память. |
157 | Cannot add or subtract relocatable symbols | Нельзя складывать или вычитать перемещаемые операнды в ассемблере. |
158 | Invalid register combination | Неправильная комбинация регистров. |
159 | 286/287 instructions are not enabled | Нельзя использовать эту команду для процессоров 80286/80287. |
160 | Invalid symbol reference | Этот параметр нельзя использовать как операнд в команде ассемблера. |
162 | ASM expected | Здесь должно быть зарезервированное слово ASM. |
Приложение Е
Интервал:
Закладка: