Дополнительные возможности Object Pascal. - раздел Программирование, Объектно-ориентированное программирование 4.17.4. Функции
А) Могут Возвращать Значения Определенных Пол...
4.17.4. Функции
а) могут возвращать значения определенных пользователем типов, включая сложные;
б) внутри каждой функции предопределена доступная по чтению и записи локальная переменная Result, имеющая тот же тип, что и функция. Ее значение до первого присваивания не определено. После завершения процедуры-функции эта функция возвращает значение, присвоенное переменной Result. Использование переменной Result является более наглядным и современным, чем обычный синтаксис языка PASCAL для функций, где значение возвращается через доступную только по записи локальную переменную с именем, совпадающим с именем функции.
4.17.5. Оператор CASE.
Значения вариантов (в том числе диапазоны) не могут пересекаться. Расположение вариантов в порядке возрастания позволяет компилятору оптимизировать код.
4.17.6. Открытые массивы.
Открытым массивом называется массив, используемый как формальный параметр процедуры, длина которого задается не в месте задания процедуры, а при ее вызове. При этом при ее вызове могут использоваться массивы разной длины.
Замечание: если нужен массив переменной длины, для этих целей используют список (мы уже знаем, как это делать). Правда, работа с массивом требует меньше памяти и идет быстрее, чем со списком. В Delphi начиная с версии 2.0 одномерные открытые массивы можно использовать без описания соответствующего типа. С версии 4.0 поддерживаются двумерные открытые массивы. Имеются предопределенные функции Low и High, в качестве параметра которых подставляется имя массива. При этом Low возвращает номер первого элемента, а High — последнего. Надо отметить, что в Delphi (как и в С++, JavaScript и Java) все номера начинаются с 0, а не с 1.
Пример:
program ArcDemo; {MyData - открытый массив}
function Mean(MyData:array of Real):Real;
var i:Integer;
begin
Result:=0;
for i:=Low(MyData)to High(MyData)do {цикл от первого до
последнего элемента}
Result:=Result+MyData[i];
Result:=Result/(High(MyData)-Low(MyData)+1);
end;
var X:Real;
begin
X:=mean([1,9,9,7]); {задаем массив путем перечисления элементов}
end.
Имеется возможность передавать в процедуру открытый массив разнотипных переменных. Такой параметр должен быть описан как array of const. Он может передаваться как по имени (т.е. по указателю на массив), так и по значению (т.е. делается его копия). Внутри процедуры элементы массива рассматриваются как записи типа TVarRec, описанные в модуле System, причем имеется поле типа VType, позволяющее идентифицировать тип фактического параметра.
Пример функции, возвращающей строковое значение переменного числа параметров, а заодно и демонстрирующей не слишком последовательную методику преобразования выражений разных типов в строку:
function AllToStr(const MyParameters:array of const):string;
const
BString:array[Boolean] of string=('False','True');
Иногда удобно писать процедуры общего назначения, которые должны выглядеть одинаково для параметров с переменными разного типа. В этом случае целесообразно вместо нескольких процедур использовать одну с параметрами типа variant.
Для переменных типа variant действуют особые правила присваивания: переменной
aMyVar:Variant;
можно присваивать выражения любых типов независимо от текущего значения переменной:
begin
...
aMyVar:=1;
...
aMyVar:=true;
...
aMyVar:='SomeString';
...
end;
При присваивании строковой переменной (или участии в строковом выражении) переменная вариантного типа возвращает строку с соответствующим значением. В предыдущем примере это было бы '1','true' и 'SomeString', соответственно.
Приведение типов для других случаев описывать не будем. Информацию по этому вопросу можно найти в специальной документации среды Delphi.
Работа с переменными типа variant гораздо медленнее чем для обычных, т.к. проверки и приведения типов во время исполнения программы занимают много времени. Кроме того, жесткость диагностики для этого случая значительно снижена, что может привести к возникновению не отслеживаемых компилятором ошибок. Поэтому, по мере возможностей, лучше избегать применения переменных variant. Их целесообразно использовать только в случае вызова DLL (Dynamic Link Libraries), написанных на языке С, для обеспечения совместимости по типу с параметрами функции из этих библиотек.
На сайте allrefs.net читайте: "Объектно-ориентированное программирование"
Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ:
Дополнительные возможности Object Pascal.
Что будем делать с полученным материалом:
Если этот материал оказался полезным ля Вас, Вы можете сохранить его на свою страничку в социальных сетях:
Object PASCAL
(72 часа)
Вадим Валериевич Монахов, доцент кафедры вычислительной физики СпбГУ
Введение
1.1. Основной принцип ст
Алфавит языка PASCAL. Идентификаторы.
Основной алфавит языка PASCAL состоит из латинских букв и цифр.
Буквы:
ABCD...XYZ — заглавные (прописные),
abcd...xyz — строчные,
а также знак _
Арифметические операторы.
Бинарные полиморфные (тип результата определяется по правилам приведения типов,
см. далее):
+ сложение (все целые и вещественные типы, строковые типы, множества).
Логические операторы и операции отношения.
Логические операторы:
and логическое "И". Пример: a and b
or логическое "ИЛИ": a or b
xor логическое "исключающее ИЛИ": a xor b
not
Структура простейшей программы.
В PASCAL любое число пробелов, символов <TAB> или переносов на новую строку везде приводится к одному пробелу (конечно, кроме строковых выражений). Имя файла с текстом программы должно быть т
Простейшие операторы языка Object PASCAL
2.9.1. Пустой и составной операторы.
Операторы в языке PASCAL разделяется символом ";".
Пустой оператор — это просто пустая строка (или эквивален
Классы, экземпляры класса, наследование, иерархия.
Объектный тип (например, tDot) называется классом. Переменная данного типа — объект или, что то же самое, экземпляр класса. То есть при задании
Var dDot:tDot
переменная dDot – это
Правила присваивания. Совместимость типов для объектов.
Для потомков при использовании их "на месте" прародителей любого уровня имеется два основных варианта совместимости типов (по вызовам и по присваиваниям) между:
1. экземплярами о
Очередь, стек, двунаправленный список.
Совершенно аналогичным образом можно создавать объект — двунаправленный список, в котором каждый узел имеет указатели как "влево" (на предыдущий узел), так и "вправо" (на послед
Классы, объекты, поля и методы.
В Object Pascal класс — тип записи, который может иметь в своем составе поля данных и методы (а также свойства, но о них будет отдельный разговор).
Пример описания класса и переменн
Свойства.
В Delphi пожелание ООП "не обращаться из программы к полям, а действовать через методы" нашло отражение в новом для ООП принципе — свойствах объекта.
Свойство определяется
Создание и уничтожение объектов. Конструкторы и деструкторы.
В Object Pascal объекты могут быть только динамическими! Любая переменная объектного типа — это указатель, но доступ к объекту идет без 'шляпки', а создание нового объекта осуществляется не операто
Области видимости объектов.
В Delphi существуют зарезервированные слова public ("общие"), protected ("защищенные") и private ("личные") для определения специальных правил видимости областей кода
Обработка исключительных ситуаций.
Во время работы программы часто встречаются исключительные ситуации: деление на 0, отсутствие места на диске или попытка писать на защищенную для записи дискету, ошибочный символ при вводе (наприме
Специальные средства для работы с MS Windows: сообщения.
Для обработки сообщений Windows в Delphi существует механизм динамических методов, называемых сообщениями. Они должны быть описаны в классе как процедуры, имеющие один параметр, передаваемый по име
События и их делегирование. Обработка событий.
События — это свойства процедурного типа. Их название принято начинать с префикса "on". Для описания события некого типа (как описать новый тип события будет рассказано далее) в объекте н
Методы класса и указатели на класс.
Некоторые методы бывает нужно вызывать без создания экземпляра класса (например, для получения информации о имени класса, размере экземпляра класса и т.п.). Такие методы называются методами класса
Визуальное проектирование в среде Delphi.
Перед началом работы обычно надо настроить пути к библиотеке Delphi, а в Delphi 3.0 также установить пакеты. Это связано с тем, что Windows 95 (и, тем более, NT 4.0) имеет индивидуальные настройки
Создание экранных форм. Инспектор объектов.
При входе в Delphi автоматически открывается проект "по умолчанию". Изначально это проект с пустой экранной формой, на которой пунктиром показана сетка, к которой идет привязка для выравн
Палитра компонентов.
Мы будем описывать только наиболее важные свойства и события для компонентов и перечислим только наиболее часто используемые компоненты из стандартных библиотек Delphi 3.0. Для Delphi 2.0 практичес
Общие представления об интерфейсах в Object PASCAL
Интерфейс объекта определяют методы и свойства, которые могут быть реализованы классом-наследником этого интерфейса. Они описываются аналогично абстрактным классам, так же, как абстрактные классы,
Особенности разработки DLL
Работа программ с DLL (Dynamic Link Library) поддерживается операционной системой, а не компилятором какого-либо языка программирования. Они представляют собой универсальный механизм использования
ActiveX
Подпроцессы (Threads)
Для создания дополнительного подпроцесса в программах Delphy предназначен специальный модуль (в репозитории он представлен пиктограммой Thread Object
Использование библиотек OpenGL и GLU
5.21. Создание программистом собственного компонента
Литература
1. В.В.Фаронов . Delphi 6. Учебный курс.- М.:"Нолидж", 2001.- 608 с.
Хотите получать на электронную почту самые свежие новости?
Подпишитесь на Нашу рассылку
Наша политика приватности обеспечивает 100% безопасность и анонимность Ваших E-Mail
Новости и инфо для студентов