Обикновени и изброени типове данни за Delphi

на Delphi програмен език е пример за силно набран език. Това означава, че всички променливи трябва да са от някакъв тип. Типът е по същество име за вид данни. Когато декларираме променлива, трябва да посочим нейния тип, който определя набора от стойности, които променливата може да държи и операциите, които могат да се извършват върху нея.

Много от вградените типове данни на Delphi, като Integer или низ, могат да бъдат прецизирани или комбинирани за създаване на нови типове данни. В тази статия ще видим как да създадете персонализирани порядъчни типове данни в Delphi.

Обикновени типове

Определящите характеристики на обикновените типове данни са: те трябва да се състоят от ограничен брой елементи и трябва да бъдат подредени по някакъв начин.

Най-често срещаните примери за порядъчни типове данни са всички видове Integer, както и Char и Булева Тип. По-точно, Object Pascal има 12 предварително определени порядъчни типа: Integer, Shortint, Smallint, Longint, Byte, Word, Cardinal, Boolean, ByteBool, WordBool, LongBool и Char. Съществуват и два други класа потребителски определени порядъчни типове: изброени типове и поддиапазони.

instagram viewer

При всички порядъчни типове трябва да има смисъл да се придвижите назад или напред към следващия елемент. Например, реалните типове не са обикновени, защото придвижването назад или напред няма смисъл. Въпросът "Какво е следващото реално след 2.5?" е безсмислено.

Тъй като по дефиниция всяка стойност с изключение на първата има уникален предшественик и всяка стойност с изключение на последната има уникален приемник, няколко предварително определени функции се използват при работа с порядъчни типове:

функция ефект
Поръчка (X) Дава индекса на елемента
Пред (X) Отива към елемента, изброен преди X във типа
Succ (X) Отива към елемента, посочен след X във типа
Дек (X; н) Премества n елемента назад (ако n е пропуснато, движи 1 елемент назад)
Inc (X; н) Премества n елемента напред (ако n е пропуснат, движи 1 елемент напред)
Ниска (X) Връща най-ниската стойност в диапазона от порядъчни данни тип X
Висока (X) Връща най-високата стойност в диапазона от порядъчни данни тип X


Например High (Byte) връща 255, защото най-високата стойност на тип Byte е 255, а Succ (2) връща 3, защото 3 е приемник на 2.

Забележка: Ако се опитаме да използваме Succ, когато при последния елемент Delphi ще генерира a изключение за изпълнение ако проверката на обхвата е включена.

Delphi изброен тип

Най-лесният начин да създадете нов пример от порядъчен тип е просто да изброите куп елементи в някакъв ред. Стойностите нямат присъщо значение и тяхната обичайност следва последователността, в която са посочени идентификаторите. С други думи, изброяването е списък от стойности.

Тип TWeekDays = (понеделник, вторник, сряда, четвъртък, петък, събота, неделя);

След като дефинираме изброен тип данни, можем да декларираме променливи от този тип:

Var SomeDay: TWeekDays;

Основната цел на изброения тип данни е да изясни какви данни си програма ще манипулира. Изброеният тип наистина е само кратък начин за присвояване на последователни стойности на константи. Предвид тези декларации, вторник е константа от типа TWeekDays.

Delphi ни позволява да работим с елементите в изброен тип, използвайки индекс, който идва от реда, в който са изброени. В предишния пример, понеделник в TWeekDays тип декларация има индекс 0, вторник има индекс 1 и т.н. Функциите, изброени в таблицата преди, нека например използваме Succ (петък), за да "отидем" в събота.

Сега можем да опитаме нещо като:

за SomeDay: = понеделник да се неделя правяако SomeDay = вторник тогава
ShowMessage ('Вторник е!');

Библиотеката на визуалните компоненти на Delphi използва изброени типове на много места. Например позицията на формуляр се дефинира, както следва:

TPosition = (poDesigned, poDefault, poDefaultPosOnly, poDefaultSizeOnly, poScreenCenter);

Използваме позиция (чрез Object Inspector), за да получим или зададем размера и разположението на форма.

Видове субрансиониране

Просто казано, поддиапазонният тип представлява подмножество от стойности в друг порядъчен тип. По принцип можем да дефинираме всеки поддиапазон, като започнем с всеки порядъчен тип (включително предварително определен изброен тип) и използваме двойна точка:

Тип TWorkDays = понеделник.. петък;

Тук TWorkDays включва стойностите понеделник, вторник, сряда, четвъртък и петък.

Това е всичко - сега вървете изброяване!

instagram story viewer