орівнювати 8 елементам. Максимальна потужність множини - 256 елементів. Для таких множин компілятор виділяє по 16 суміжних байт. p> І ще один експеримент: змініть діапазон базового типу на 1 .. 256. Хоча потужність цього типу становить 256 елементів, при спробі компіляції програми компілятор повідомить про помилку: Sets may have at most 256 elements (Множини можуть мати не більше 256 елементів) т. к. нумерація елементів множини починається з нуля незалежно від оголошеної в програмі нижньої межі. Компілятор дозволяє використовувати в якості базового типу цілочисельний тип-діапазон з мінімальною кордоном 0 і максимальної 255 або будь-який перераховуються тип не більше ніж з 256 елементами (максимальна потужність перераховується типу - 65536 елементів). В
1.3 Рядки
Для обробки текстів у Object Pascal використовуються такі типи:
короткий рядок shortString або string [n] , де n <= 255;
довга рядок string ;
широка рядок WideString ;
нуль-термінальна рядок pchar .
Спільним для цих типів є те, що кожен рядок трактується як одновимірний масив символів, кількість символів в якому може змінюватися в працюючій програмі: для string [n] довжина рядка змінюється від 0 до n, для string і pchar - від 0 до 2 Гбайт.
У стандартному Паскалі використовуються тільки короткі рядки String [n] . У пам'яті такий рядку виділяється n + i байт, перший байт містить поточну довжину рядка, а самі символи розташовуються, починаючи з 2-го по рахунку байта. Оскільки для довжини рядка в цьому випадку відводиться один байт, максимальна довжина короткої рядка не може перевищувати 255 символів. Для оголошення короткого рядка максимальної довжини призначено стандартний тип ShortString (еквівалент String [255] ).
У Windows широко використовуються нуль-термінальні рядки, що представляють собою ланцюжки символів, обмежені символом # о. Максимальна довжина такої рядка лімітується тільки доступною пам'яттю і може бути дуже великою.
У 32-розрядних версіях Delphi введено новий тип string , що поєднує в собі зручності обох типів. При роботі з цим типом пам'ять виділяється в міру потреби (динамічно) і обмежена наявною в розпорядженні програми доступною пам'яттю.
В
1.4 Покажчики та динамічна пам'ять
В
1.4.1 Динамічна пам'ять
Динамічна пам'ять - це оперативна пам'ять ПК, що надається програмі при її роботі. Динамічне розміщення даних означає використання динамічної пам'яті безпосередньо при роботі програми. На відміну від цього статичне розміщення здійснюється компілятором Object Pascal в процесі компіляції програми. При динамічному розміщенні заздалегідь не відомі ні тип, ні кількість розміщуваних даних.
В
1.4.2 Покажчики
Оперативна пам'ять ПК являє собою сукупність комірок для зберігання інформації - байтів, кожен з яких має власний номер. Ці номери називаються адресами, вони дозволяють звертатися, до будь-якого байту пам'яті. Object Pascal надає в розпорядження програміста гнучке засіб управління динамічною пам'яттю - так звані покажчики. Покажчик - це змінна, яка в якості свого значення містить адресу байта пам'яті. За допомогою покажчиків можна розміщувати в динамічній пам'яті будь-який з відомих у Object Pascal типів даних. Лише деякі з них ( Byte, Char, ShortInt, Boolean ) займають у внутрішньому поданні один байт, інші - кілька суміжних. Тому насправді покажчик адресує лише перший байт даних.
Як правило, покажчик зв'язується з деяким типом даних. Такі покажчики будемо називати типізований. Для оголошення типизированного покажчика використовується значок ^, який поміщається перед відповідним типом.
У Object Pascal можна оголошувати покажчик і не пов'язувати його при цьому з яким конкретним типом даних. Для цього служить стандартний тип pointer , наприклад:
var
р: Pointer;
Покажчики такого роду будемо називати нетіпізірованньті. Оскільки нетипізовані покажчики не пов'язані з конкретним типом, з їх допомогою зручно динамічно розміщувати дані, структура і тип яких змінюються в ході роботи програми.
Як вже говорилося, значеннями покажчиків є адреси змінних в пам'яті, тому слід було б очікувати, що значення одного покажчика можна передавати іншому. Насправді це не зовсім так. У Object Pascal можна передавати значення тільки між покажчиками, пов'язаними з одним і тим же типом даних.
В
1.4.3 Виділення і звільнення динамічної пам'яті
Вся динамічна пам'ять в Object Pascal розглядається як суцільний масив байтів, який називається купою.
Пам'ять під будь-яку динамічно розміщувану змінну виділяється процедурою New. Параметром звернення до цієї процедури є типізований покажчик. ...