Паскаль для новичков (часть 32): Ресурсные файлы
![](/images/magazine/pascal/pascal1a1.jpg)
Приходилось ли вам создавать программы, которым для нормальной работы требовалось присутствие нескольких десятков или сотен мелких файлов, содержащих всевозможные данные, как то шрифты, изображения интерфейсных элементов, звуковых эффектов, и прочего? Вот и мне приходилось...
Паскаль для новичков (часть 31): Модули
![](/images/magazine/pascal/pascal1a1.jpg)
Модульное программирование позволяет группировать константы, описания типов, объявление переменных, подпрограммы по их назначению в отдельные модули.
Паскаль для новичков (часть 30): Конфигурирование программы
![](/images/magazine/pascal/pascal1a1.jpg)
В моей переписке с читателями промелькнул читательский вопрос на тему сохранения настроек программы в файле конфигурации *.INI. При этом читателю явно было лень самому обмозговать эту совсем несложную задачу. Ну что же, попробуем самостоятельно написать модуль, который позволял бы нам выполнять следующие действия...
Паскаль для новичков (часть 29): Текстовые файлы
![](/images/magazine/pascal/pascal1a1.jpg)
Все подпрограммы, рассмотренные ранее, предназначены для работы с файлами, имеющими записи строго определенного размера. Но все это непригодно для работы с текстовыми файлами, так как текстовый файл сам по себе – это последовательность не выровненных данных различной длины, где данные представлены в символьной форме...
Паскаль для новичков (часть 28): 640К для Паскаля не предел 2 (продолжение)
![](/images/magazine/pascal/pascal1a1.jpg)
Ну что, продолжим? Функция
GetXMS выполняет все необходимые действия по выделению EMB размером
Size килобайт, инициализирует структуру указателя
XPtr, помещая идентификатор выделенного EMB в поле
Handle, в поле
Allocated заносит единицу. Если процессор работает в реальном режиме, то функция пытается заполучить линейный адрес выделенного EMB, и если это удается, то заносит его 32-битное значение в поле
LPtr. Если же процессор находится в режиме V86, то при вызове функции
GetLinePointer может произойти ошибка выполнения задачи, так как режим работы V86 процессора свидетельствует о том, что загружен драйвер EMM386 либо программа работает в сеансе MS-DOS под Windows. Дело в том, что...
Паскаль для новичков (часть 27): Навигация по файлу
![](/images/magazine/pascal/pascal1a1.jpg)
Для гибкости работы с файлами в Turbo Pascal предусмотрены дополнительные возможности, о которых расскажу в этой статье.
Паскаль для новичков (часть 26): 640К для Паскаля не предел
![](/images/magazine/pascal/pascal1a1.jpg)
Сегодня я расскажу об
extended-памяти, которая впервые появилась в компьютерах на базе процессора INTEL80286. В компьютерах на базе процессоров INTEL80386 и выше всегда есть
extended-память (
eXtended Memory Specification – спецификация дополнительной памяти XMS, это вся оперативная память свыше границы первого мегабайта) и обычно нет аппаратной
expanded-памяти (EMS), хотя ее можно эмулировать с помощью драйвера EMM386, QEMM и т.п.
Паскаль для новичков (часть 25): Выражения. Файловые типы и ввод-вывод
![](/images/magazine/pascal/pascal1a1.jpg)
Как и в любом другом языке программирования, в Паскале выражения играют важнейшую роль при вычислении значений для переменных. Обычно выражение строится из операндов, знаков операций и круглых скобок.
Паскаль для новичков (часть 24): Расширение математических возможностей Паскаля
![](/images/magazine/pascal/pascal1a1.jpg)
Однажды, когда мне понадобилось реализовать сложный алгоритм с использованием логарифмов, возведений в произвольную степень, вычисление определенных интегралов, я был неприятно удивлен, что среди встроенных алгебраических функций среды Turbo Pascal отсутствуют выше перечисленные. Тогда, поворошив в памяти остатки еще не выветрившихся знаний из школьного и ВУЗовского курсов алгебры и высшей математики, я набросал исходный код нескольких необходимых функций. С подбором эффективного алгоритма вычисления определенного интеграла мне помогла книга, указанная в списке литературы в конце этой статьи.
Паскаль для новичков (часть 23): Бестиповые указатели. Управление кучей. Ошибки в работе с указателями
![](/images/magazine/pascal/pascal1a1.jpg)
В предыдущей статье я рассказывал о стандартных процедурах
New и
Dispose, позволяющих выделять и освобождать память под динамические переменные. При этом, данные процедуры применимы только к типизированным указателям, то есть к указателям, имеющим базовый тип. Если говорить на чистоту, то эти процедуры являются универсальными и помимо всего выше описанного, предназначены для создания и уничтожения экземпляров объектов, посредством явного вызова конструктора и деструктора соответственно. Поэтому лично я большее предпочтение отдаю двум другим стандартным процедурам
GetMem и
FreeMem, о которых сегодня и пойдет речь.