К омпоненты GroupBox и CheckBox

Абстракция

Абстрагирование — это способ выделить набор значимых характеристик объекта, исключая из рассмотрения незначимые. Соответственно, абстракция — это набор всех таких характеристик.[1]

Инкапсуляция

Инкапсуляция — это свойство системы, позволяющее объединить данные и методы, работающие с ними в классе, и скрыть детали реализации от пользователя.[1]

Наследование

Наследование — это свойство системы, позволяющее описать новый класс на основе уже существующего с частично или полностью заимствующейся функциональностью. Класс, от которого производится наследование, называется базовым, родительским или суперклассом. Новый класс — потомком, наследником или производным классом.[1]

Полиморфизм

Полиморфизм — это свойство системы использовать объекты с одинаковым интерфейсом без информации о типе и внутренней структуре объекта.[1]

Класс

Класс является описываемой на языке терминологии (пространства имён) исходного кода моделью ещё не существующей сущности (объекта). Фактически он описывает устройство объекта, являясь своего рода чертежом. Говорят, что объект — это экземпляр класса. При этом в некоторых исполняющих системах класс также может представляться некоторым объектом при выполнении программы посредством динамической идентификации типа данных. Обычно классы разрабатывают таким образом, чтобы их объекты соответствовали объектам предметной области.

Объект

Сущность в адресном пространстве вычислительной системы, появляющаяся при создании экземпляра класса или копирования прототипа (например, после запуска результатов компиляции и связывания исходного кода на выполнение).

Прототип

Прототип — это объект-образец, по образу и подобию которого создаются другие объекты. Объекты-копии могут сохранять связь с родительским объектом, автоматически наследуя изменения в прототипе; эта особенность определяется в рамках конкретного языка.

2 Основы визуального программирования

Визуальное программирование представляет собой процесс создания Windows-приложений, при котором возможно одновременно конструировать, изменять, отлаживать приложение, используя интегрированную среду разработки IDE (Integrated Development Environment). По сути, визуальное программирование – это единство двух взаимосвязанных процессов: наглядного конструирования типового Windows-окна приложения и написания кода.
Интегрированная среда разработки Delphi 6 представляет собой многооконную систему, определяемую настройками пользовательского интерфейса:

· Главное окно (Delphi6 – Project I).

· Окно Обозреватель дерева объектов (Object Tree View).

· Окно Инспектора объектов (Object Inspector).

· Окно Конструктора формы (Forml).

· Окно Редактора кода (UnitI.pas).

· и др.

Модульслужит для размещения кода программы пользователя.
Любая программа Delphi состоит из файла проекта(*.dpr), одного или нескольких модулей (*.pas).
Имена в Delphi задаются латинскими буквами, цифрами и знаком подчеркивания.
Интерфейс Delphi. Элементы интерфейса. Главное окно/
Главное окноосуществляет основные функции управления проектом создаваемой программы и состоит из:

· Строки заголовка

· Строки меню

· Панели инструментов

· Палитры компонентов

Внимание.
Главное окно остается открытым все время работы IDE. Закрывая его, вы тем самым закрываете Delphi и все открытые в нем окна.

К омпоненты GroupBox и CheckBox - student2.ru


Строка заголовкаглавного окна отображает имя открытого в данный момент проекта.
По заголовку главного окна можно определить, в каком режиме открыт проект.

Текст заголовка Режим работы
Delphi 6 – Project1 Редактирование
Delphi 6 – Project1 [Running] Выполнение

Строка менюсодержит команды, необходимые для разработки и тестирования приложений и используется так же, как любое стандартное Windows-меню.
Панель инструментов. Панель инструментов представляет собой набор кнопок для быстрого доступа к необходимой функции меню. На этой панели есть, в частности, кнопка сохранения проекта на диске, кнопка открытия проекта, кнопка запуска программы на выполнение.
Пользователь может изменить конфигурацию панели инструментов. Для этой цели используется окно пользовательских настроек, с помощью которого можно отображать, скрывать или менять положение на панели инструментов тех или иных инструментов.
Окно пользовательских настроек можно открыть, щелкнув правой кнопкой мыши на панели инструментов. С помощью появившегося контекстного меню можно произвести необходимые настройки.
Палитра компонентовустроена в виде наборов пиктограмм. На палитре компонентов, представляющей собой множественные тематические страницы, располагаются визуальные и невизуальные компоненты вашей будущей программы. Они составляют библиотеку визуальных компонентов (VCL – Visual Component Library).
Примечание. Невизуальные компоненты видны только при проектировании приложения.

Окно проектировщика формы

Окно проектировщика формы – главное место, где происходит сборка программы из компонентов, содержащихся в палитре компонентов. Сама форма – это уже готовая к исполнению программа. В указанное место формы будет вставлен объект - экземпляр компонента выбранного типа.

К омпоненты GroupBox и CheckBox - student2.ru

Окно инспектора объетов К омпоненты GroupBox и CheckBox - student2.ru Окно инспектора объектов(Object Inspector) - отображает свойства, активизированного щелчком мыши какого-либо компонента или самой формы. Имя активизированного компонента находится под заголовком окна. Это окно имеет две закладки – Свойства (Properties) и События (Еvents). На первой закладке (Properties) постоянно отображаются все доступные свойства выбранного компонента. В левой колонке содержится список, а в правой – текущие значения по умолчанию. На второй закладке (Events) отображаются возможные обработчики событий для выбранного компонента. В левой колонке - названия, а в правой - соответствующие свойства или процедуры. Что же такое свойства и реакции на события?

Каждый объект в Delphi, даже само окно разрабатываемого приложения, имеют определенные свойства: цвет, размер, отображаемый текст и т.п.
Эти свойства можно менять еще до запуска проектируемой программы на выполнение. В зависимости от изменяемого свойства результат можно просматривать уже сразу.
Реакции на события, это результат произошедшего системного события, например, щелчок мыши, нажатие на кнопку, открытие окна и т.п. Реакцию на событие назначают программно, указывая список действий, которые необходимо произвести. Например, если пользователь выполняет клик по кнопке, производится копирование файла.

Окно редактора кодов

  К омпоненты GroupBox и CheckBox - student2.ru По ходу работы система формирует в окне Редактора кодов текст программы на языкеObject Pascal, связанной с формой. После загрузки Delphi это окно спрятано за окном формы, и его можно увидеть, щелкнув на кнопке Toggle Form/Unit в панели инструментов.

На момент первого запуска это окно имеет заголовок Unit1.
В редакторе кода могут быть открыты сразу несколько файлов. Каждый открытый файл размещается на отдельной странице, а его название отображается на вкладке в верхней части.
Если в вашей программе три окна, то они будут взаимодействовать в процессе работы с тремя так называемыми модулями (Unit). Все эти модули и отображаются в редакторе.
В окне кода программист непосредственно пишет текстовую часть программы.
Текстовая часть разбивается на несколькие части, называемые процедурами и функциями, которые работают отдельно одна от другой.

Пользователь может дополнять текст программы самостоятельно или по предложению системы в момент размещения объектов в форме.
Внимание!
Никогда не изменяйте текст, который уже написан. Можно только добавлять текст программы, но остерегайтесь изменять уже существующий...

Структура программ Delphi

Источник: codingclub

Программист

Любая программа в Delphi состоит из файла проекта (файл с расширением dpr) и одного или нескольких модулей (файлы с расширениями pas). Каждый из таких файлов описывает программную единицу Object Pascal.

Структура проекта

Файл проекта представляет собой программу, написанную на языке Object Pascal и предназначенную для обработки компилятором. Эта программа автоматически создается Delphi и содержит лишь несколько строк. Чтобы увидеть их, запустите Delphi и щелкните по опции Project / View Source главного меню [ В предыдущих версиях Delphi для просмотра кода проекта используйте опцию View / project Source. ]. Delphi покажет окно кода с закладкой Project1, содержащее такой текст:

program Projecti;

Uses

Forms, Unit1 in 'Unit1.pas' {fmExample};

{$R *.RES}

Begin

Application.Initialize;

Application.CreateForm(TfmExample, fmExample);

Application.Run;

End.

В окне кода жирным шрифтом выделяются так называемые зарезервированные слова, а курсивом - комментарии (так же выделяются зарезервированные слова и комментарии в книге). Как видим, текст программы начинается зарезервированным словом program и заканчивается словом end с точкой за ним. Замечу, что сочетание end со следующей за ней точкой называется терминатором программной единицы: как только в тексте программы встретится такой терминатор, компилятор прекращает анализ программы и игнорирует оставшуюся часть текста.

Зарезервированные слова играют важную роль в Object Pascal, придавая программе в целом свойство текста, написанного на почти естественном английском языке. Каждое зарезервированное слово (а их в Object Pascal несколько десятков) несет в себе условное сообщение для компилятора, который анализирует текст программы так же, как читаем его и мы: слева направо и сверху вниз.

Комментарии, наоборот, ничего не значат для компилятора, и он их игнорирует. Комментарии важны для программиста, который с их помощью поясняет те или иные места программы. Наличие комментариев в тексте программы делает ее понятнее и позволяет легко вспомнить особенности реализации программы, которую вы написали несколько лет назад. В Object Pascal комментарием считается любая последовательность символов, заключенная в фигурные скобки. В приведенном выше тексте таких комментариев два, но строка

{$R *.RES}

на самом деле не является комментарием. Этот специальным образом написанный фрагмент кода называется директивой компилятора (в нашем случае - указание компилятору на необходимость подключения к программе так называемого файла ресурсов). Директивы начинаются символом $, который стоит сразу за открывающей фигурной скобкой.

Поскольку речь зашла о комментариях, замечу, что в Object Pascal в качестве ограничителей комментария могут также использоваться пары символов (*, *) и //. Скобки (*...*) используются подобно фигурным скобкам т. е. комментарием считается находящийся в них фрагмент текста, а символы // указывают компилятору, что комментарий располагается за ними и продолжается до конца текущей строки:

{Это комментарий}

(*Это тоже комментарий*)

//Все символы до конца этой строки составляют комментарий

Слово Program со следующим за ним именем программы и точкой с запятой образуют заголовок программы. За заголовком следует раздел описаний, в котором программист (или Delphi) описывает используемые в программе идентификаторы. Идентификаторы обозначают элементы программы, такие как типы, переменные, процедуры, функции (об элементах программы мы поговорим чуть позже). Здесь же с помощью предложения, которое начинается зарезервированным словом uses (использовать) программист сообщает компилятору о тех фрагментах программы (модулях), которые необходимо рассматривать как неотъемлемые составные части программы и которые располагаются в других файлах. Строки

Uses

Forms, Unit1 in 'Unitl.pas' {fmExample};

указывают, что помимо файла проекта в программе должны использоваться модули Forms И Unit1. модуль Forms является стандартным (т. е. уже известным Delphi), а модуль Unit1 - новым, ранее неизвестным, и Delphi в этом случае указывает также имя файла с текстом модуля (in 'uniti.pas') и имя связанного с модулем файла описания формы {fmExample}.

Собственно тело программы начинается со слова begin (начать) и ограничивается терминатором end с точкой. Тело состоит из нескольких операторов языка Object Pascal. В каждом операторе реализуется некоторое действие - изменение значения переменной, анализ результата вычисления, обращение к подпрограмме и т. п. В теле нашей программы - три исполняемых оператора:

Application.Initialize;

Application.CreateForm(TfmExample, fmExample);

Application.Run;

Каждый из них реализует обращение к одному из методов объекта Application. Я вынужден забежать вперед и хотя бы кратко пояснить только, что введенные термины, которые определяют важные для Object Pascal понятия. Объектом называется специальным образом оформленный фрагмент программы, заключающий в себе данные и подпрограммы для их обработки. Данные называются полями объекта, а подпрограммы - его методами. Объект в целом предназначен для решения какой-либо конкретной задачи и воспринимается в программе как неделимое целое (иными словами, нельзя из объекта "выдернуть" отдельное поле или метод). Объекты играют чрезвычайно важную роль в современных языках программирования. Они придуманы для того, чтобы увеличить производительность труда программиста и одновременно повысить качество разрабатываемых им программ. Два главных свойства объекта - функциональность и неделимость - делают его самостоятельной или даже самодостаточной частью программы и позволяют легко переносить объект из одной программы в другую. Разработчики Delphi придумали для нас с вами сотни объектов, которые можно рассматривать как кирпичики, из которых программист строит многоэтажное здание программы. Такой принцип построения программ называется объектно-ориентированным программированием (ООП). В объекте Application собраны данные и подпрограммы, необходимые для нормального функционирования Windows-программы в целом. Delphi автоматически создает объект-программу Application для каждого нового проекта. Строка

Application.Initialize;

означает обращение к методу Initialize объекта Application. Прочитав эту строку, компилятор создаст код, который заставит процессор перейти к выполнению некоторого фрагмента программы, написанного для нас разработчиками Delphi. После выполнения этого фрагмента (программисты говорят: после выхода из подпрограммы) управление процессором перейдет к следующей строке программы, в которой вызывается метод CreateForm и т. д.

АЛФАВИТ

Алфавит языка Object Pascal включает буквы, цифры, шестнадцатеричные цифры, специальные символы, пробелы и зарезервированные слова.

Буквы - это буквы латинского алфавита от а до z и от А до Z ,а также знак подчеркивания “_”. В языке нет различия между заглавными и строчными буквами алфавита, если только они не входят в символьные и строковые выражения.

Цифры - арабские цифры от 0 до 9.

Каждая шестнадцатеричная цифра имеет значение от 0 до 15. Первые 10 значений обозначаются арабскими цифрами 0... 9, остальные шесть - латинскими буквами а ... f или а... f.

Специальные символы Object Pascal - это символы

+ - * / = , ' . : ; < > [ ] ( ) { } " @ $ #

К специальным символам относятся также следующие пары символов:

< > , < = , > = , : = , ( * , * ) , ( . , . ) , / / .

В программе эти пары символов нельзя разделять пробелами, если они используются как знаки операций отношения или ограничители комментария. Символы (. и .) могут употребляться соответственно вместо [ и ].

Особое место в алфавите языка занимают пробелы, к которым относятся любые символы в диапазоне кодов от 0 до 32. Эти символы рассматриваются как ограничители идентификаторов, констант, чисел, зарезервированных слов. Несколько следующих друг за другом пробелов считаются одним пробелом (последнее не относится к строковым константам).

В Object Pascal имеются следующие зарезервированные слова:

and exports mod Shr
array file nil String
as finalization not then
asm finally object threadvar
begin for of to
case function or try
class goto out type
const if packed unit
constructor implementation procedure until
destructor in program uses
dispinterface inherited property var
div initialization raise while
do inline record with
downto interface repeat xor
else is resourcestring    
end label set  
except library shi    

Зарезервированные слова не могут использоваться в качестве идентификаторов.

Стандартные директивы первоначально связаны с некоторыми стандартными объявлениями в программе. К ним относятся:

absolute dynamic name public safecall
abstract export near published stdcall
assembler external nodefault read stored
automated far override readonly virtual
cdecl forward package register write
contains implements pascal re introduce writeonly
default index private requires    
dispid message protected resident    

Как и зарезервированные слова, стандартные директивы в окне кода Delphi выделяются жирным шрифтом, тем не менее вы можете переопределить любую стандартную директиву, т. е. объявить одноименный идентификатор.

Слова private, protected, public, published И automated считаются зарезервированными внутри объявления класса и стандартными директивами - вне объявления.

ИДЕНТИФИКАТОРЫ

Идентификаторы в Object Pascal - это имена констант, переменных, меток, типов, объектов, классов, свойств, процедур, функций, модулей, программ и полей в записях. Идентификаторы могут иметь произвольную длину.

Идентификатор всегда начинается буквой, за которой могут следовать буквы и цифры. Напомню, что буквой считается также символ подчеркивания, поэтому идентификатор может начинаться этим символом и даже состоять только из одного или нескольких символов подчеркивания. Пробелы и специальные символы алфавита не могут входить в идентификатор.

Примеры правильных идентификаторов:

a MyProgramIsBestProgram external
ALPHA date_27_sep_39 _beta

Примеры неправильных идентификаторов:

1 Program // начинается цифрой

block#l // содержит специальный символ

My Prog // содержит пробел

mod // зарезервированное слово

КОНСТАНТЫ

В качестве констант в Object Pascal могут использоваться целые, вещественные и шестнадцатеричные числа, логические константы, символы, строки символов, конструкторы множеств и признак непределенного указателя NIL.

Целые числа записываются со знаком или без него по обычным правилам и могут иметь значение в диапазоне от -263 до +263-11. Следует учесть, что, если целочисленная константа выходит за указанные границы, компилятор дает сообщение об ошибке. Такие константы должны записываться с десятичной точкой, т. е. определяться как вещественные числа.

Вещественные числа записываются со знаком или без него с использованием десятичной точки и/или экспоненциальной части.

Экспоненциальная часть начинается символом е или е, за которым могут следовать знаки “+” или “-” и десятичный порядок. Символ е (е) означает десятичный порядок и имеет смысл “умножить на 10 в степени”. Например,

3.14Е5 - 3,14 умножить на 10 в степени 5;

-17e-2 -минус 17 умножить на 10 в степени минус 2.

Если в записи вещественного числа присутствует десятичная точка, перед точкой и за ней должно быть хотя бы по одной цифре. Если используется символ экспоненциальной части е (в), за ним должна следовать хотя бы одна цифра десятичного порядка.[Только для версий 4...6. Для версии 1 диапазон от -32536 до +32535. Для версии 2 и 3 от -2147483648 до +4294967294]

Шестнадцатеричное число состоит из шестнадцатеричных цифр, которым предшествует знак доллара $ (код символа 36). Диапазон шестнадцатеричных чисел - от $ffffffffffffffff до

$7FFFFFFFFFFFFFFF(для версии 4...6).

Логическая константа - это либо слово false (ложь), либо слово true (истина).

Символьная константа - это любой символ ПК, заключенный в апострофы:

'z' - символ “z”;

'Ф' - символ “Ф”.

Если необходимо записать собственно символ апострофа, он удваивается:

'''' - символ “'” (апостроф).

Допускается использование записи символа путем указания его внутреннего кода, которому предшествует символ # (код 35), например:

#97-символ“а”;

#90 - символ “Z”;

#39 - символ “'”;

#13 - символ “CR”.

Строковая константа - любая последовательность символов (кроме символа CR - возврат каретки), заключенная в апострофы. Если в строке нужно указать сам символ апострофа, он удваивается, например:

'Это - строка символов';

'That''s string'.

Строка символов может быть пустой, т. е. не иметь никаких символов в обрамляющих ее апострофах. Строку можно составлять из кодов нужных символов с предшествующими каждому коду символами #, например, строка #83#i2i#i09#98#ii#i08 эквивалентна строке ' Symbol '.

Наконец, в строке можно чередовать части, записанные в обрамляющих апострофах, с частями, записанными кодами. Таким способом можно вставлять в строки любые управляющие символы, в том числе и символ cr (код 13), например:

#7'Ошибка !'#13'Нажмите любую клавишу ...'#7 .

Конструктор множества - список элементов множества, обрамленный-квадратными скобками,например:

[1,2,4..7,12]

[blue, red]

[ ]

[true]

В Object Pascal разрешается в объявлении констант использовать произвольные выражения, операндами которых могут быть ранее объявленные нетипизированные константы, имена типов и объектов, а также следующие функции от них:

abs lo ptr swap
chr odd round trunc
hi ord sizeof  
length pred succ  

Например:

Const

MaxReal = Maxintdiv SizeOf(real) ;

NumChars = ord('Z') - ord('a') + 1;

Ln10 = 2.302585092994;

Ln10R = 1 / Ln10;

Переменные и их типы

Переменные и их типы

Продолжаем наше обучение! В Delphi очень важную роль играют переменные. В процессе работы программы в переменных можно как хранить так и извлекать информацию. Переменные могут иметь разный тип. Например для того, чтобы в переменную записать какой-нибудь текст используется тип String. Для того, что бы записать в переменную число используют тип Integer.

Вот список основных типов переменных в Delphi:

  • Integer - целые числа из диапазона: -2147483648..+2147483647
  • Shortin - целые числа из диапазона: -128..+127
  • Byte - целые числа из диапазона: 0..+255
  • Real - как целые так и дробные числа из диапазона: 5e-324..1.7e+308
  • Double - схож с типом Real
  • String - строковый тип данных
  • Char - символьный тип данных
  • Bollean - логический тип данных. Может принимать значение True - истина или False - ложь

С теорией мы закончили, теперь давайте откроем Delphi 7 и создадим новый проект. После этого кидаем на форму знакомый нам компонент Button и еще не знакомый Label. Компонент Label эта такая полезная вещь, в которую можно записать какую-нибудь подпись. Например подпись для другого компонента или просто записать в него автора программы. Попробуйте отыскать компонент Label сами, наводя на все компоненты в вкладке Standard и читая всплывающую подсказку. Кому сложно найти, то это четвертый компонент слева, не считая значка курсора.

Я всё сделал и у меня получилось вот так:

К омпоненты GroupBox и CheckBox - student2.ru

Сейчас нам нужно создать событие OnClick на кнопке, я надеюсь, что вы помните, как это делать.
Переменные объявляются между ключевыми словами procedure и begin. Объявление начинается с ключевого словаvar, потом пишется имя переменной и через двоеточие её тип. Заканчивается все как всегда точкой с запятой.

Создадим переменную S типа String в процедуре OnClick:

procedure TForm1.Button1Click(Sender: TObject);
var S:string;
begin
 
end;

После этого между ключевыми словами begin end присвоим переменной значение равное 'Моя первая переменная'. Присвоение пишется следующим образом. Пишем имя переменной, оператор присвоения := и значение. Если мы записываем информацию типа String, то информация заключается в одинарные кавычки.

Общий вид:

procedure TForm1.Button1Click(Sender: TObject);
var S:string;
begin
S:='Моя первая переменная';
end;

Теперь если скомпилировать программу и нажать на кнопку ничего существенного не произойдет, просто в переменную запишется значение и всё. Попробуем вывести значение из переменной. Делается это также просто как и записывается. Выводить значение мы будем в наш Label.

Синтаксис такой:

Label1.Caption:=S;

Разберем этот код подробно. Сначала мы написали Label1, потом пишем точку и в Delphi появляется огромный список со свойствами данного компонента. Можно конечно порыться и отыскать там Caption, но мы будем умнее! Мы, после того как поставили точку, напишем еще букву C и Delphi как бы отсортирует все свойства и найдет все, которые начинаются с буквы C. Первым в списке как раз будет свойство Caption.

К омпоненты GroupBox и CheckBox - student2.ru

Выбираем его из списка и нажимаем на Enter. Заметьте, что мы писали Label1.C, но после того, как нажали Enter, Delphi сам дописал название свойства. Далее опять же идет оператор присвоения и наша переменная.

Вы наверняка спросите: "Зачем же переменная, если можно было написать Label1.Caption:='Моя первая переменная';?". Ответ простой. Это нужно затем, что мы изучаем переменные :).
Нет, на самом деле так присваивать тоже можно, но представьте такую ситуацию, что вы написали очень большую, популярную программу и у вас, там в программе, пятидесяти компонентам присваивается одно и тоже значение и вот перед вами встала задача: "Поменять это значение на более универсальное и понятное для пользователя".

Что вы будете делать?

  • В первом случае у вас всем этим компонентам присваивается одна и та же переменная и чтобы изменить всем этим пятидесяти компонентам значение вам просто нужно поменять значение в переменной.
  • Во втором случае вы сидите 20 минут и всё копируете и копируете значение всем пятидесяти компонентам.

Вывод делайте сами.

И так, продолжаем! В общем виде должно быть так:

procedure TForm1.Button1Click(Sender: TObject);
var S:string;
begin
S:='Моя первая переменная';
Label1.Caption:=S;
end;

Компилируем нашу программу и нажимаем на Button (батон/кнопку). Сразу же компонент Label вместо Label1 будет показывать Моя первая переменная.

На этом хотелось бы закончить, так как я уже устал писать урок :), но я еще не познакомил вас с типом Integer и как присваивать переменную с таким типом. Вы думаете, что присваивать ее нужно точно так же как и переменную типаString, но вы ошибаетесь.
Дело в том, что свойству Caption вообще у всех компонентов можно присвоить только текстовые значения. Как мы будем присваивать числовой тип если можно только текстовой? Всё проще некуда. Между типами переменных можно как бы переключаться, то есть можно из числового типа сделать текстовой и присвоить его компоненту Label. Этим мы сейчас и займемся.

Для начала нужно начать сначала :). Объявим переменную с именем I и типом Integer, дописав ее к переменной S. Код:

procedure TForm1.Button1Click(Sender: TObject);
var S:string; I:integer;
begin
...

Далее присвоим переменной I значение 21.

I:=21;

Заметьте, что числовое значение записывается без одинарных кавычек! Теперь присвоим свойству Caption значение переменной I, для этого нужно воспользоваться оператором IntToStr(). Он как бы конвертирует числовой тип в текстовой. В скобках указывается переменная, которую нужно конвертировать.

Общий вид кода:

procedure TForm1.Button1Click(Sender: TObject);
var S:string; I:integer;
begin
S:='Моя первая переменная';
Label1.Caption:=S;
 
I:=21;
Label1.Caption:=IntToStr(I);
end;

Скомпилируйте программу и вы увидите, что Label будет отображать значение переменной I, то есть 21.

Ну вот и всё! Удачи!
Встретимся в следующем уроке!

Строки и комментарии

Процедуры и функции

Процедуры

Итак, начнем исследование подпрограммы с процедур. Как уже было отмечено, процедуру надо описать. Описание процедуры состоит из заголовка и тела процедуры.

Заголовок состоит из ключевого слова procedure, за которым следует имя процедуры и, при необходимости, список параметров, заключенных в круглые скобки:

procedure <Имя> [(параметры)];

Вслед за заголовком может следовать блок объявления локальных меток, типов и переменных. Локальными они называются потому, что предназначены исключительно для этой процедуры.

ПРИМЕЧАНИЕ
Вопросы локальных и глобальных переменных, и вообще видимости в программах, будет рассмотрен позже в этой главе.

После заголовочной части следует тело процедуры, заключаемое в begin и end. Таким образом, исходный код процедуры может выглядеть примерно таким образом:

procedure TriplePrint(str: string); var i: integer; begin for i := 1 to 3 do begin writeln('"'+str+'"'); end; // конец цикла for end; // конец процедуры TriplePrint

Здесь мы определили процедуру TriplePrint, которая будет трижды выводить переданную ей в качестве аргумента строку, заключенную в двойные кавычки. Как видно, данная процедура имеет все составные части: ключевое слово procedure, имя, список параметров (в данном случае он всего один - строковая переменная str), блок объявления собственных переменных (целочисленная переменная i), и собственное тело, состоящее из оператора цикла for.

Для использования данной процедуры в любом месте программы достаточно написать инструкцию вызова процедуры, состоящую из имени процедуры и списка аргументов, например:

TriplePrint('Hello!!!');

Отметим так же, что рассмотренная нами процедура сама содержит вызов другой процедуры - writeln. Процедуры могут быть встроенными. Иначе говоря, объявление одной процедуры можно помещать в заголовочную часть другой. Например, наша процедура TriplePrint может иметь вспомогательную процедуру, которая будет "подготавливать" строку к выводу. Для этого перед объявлением переменной i, разместим объявление еще одной процедуры. Назовем ее PrepareStr:

procedure PrepareStr; begin str := '"'+str+'"'; end;

Отметим, что переменная str, хотя и не передается этой процедуре в качестве параметра, тем не менее может в ней использоваться, поскольку данная процедура является составной частью процедуры TriplePrint, внутри которой данная переменная доступна для использования.

Таким образом, мы получаем две процедуры, одна из которых (TriplePrint) может использоваться во всей программе, а другая (PrepareStr) - только внутри процедуры TriplePrint. Чтобы преимущество использования процедур было очевидно, рассмотрим их на примере программы, которая будет использовать ее неоднократно, для чего обратимся к листингу 6.1 (см. так же пример в Demo\Part1\Procs).

Листинг 6.1. Использование процедур

program procs; {$APPTYPE CONSOLE} procedure TriplePrint(str: string); procedure PrepareStr; begin str := '"'+str+'"'; end; var i: integer; begin PrepareStr; for i := 1 to 3 do begin writeln(str); end; end; // конец процедуры TriplePrint begin // начало тела основной программы TriplePrint('Hello!!!'); // первый вызов TriplePrint TriplePrint('How are you???'); // 2-й вызов TriplePrint('Bye...'); // 3-й readln; end.

Очевидно, что если бы не процедура, то нам трижды пришлось бы писать цикл, свой для каждого слова. Таким образом, процедуры позволяют использовать единожды написанный код многократно, что существенно облегчает написание программ.

Функции

Подобно процедурам, описание функции состоит из заголовка и тела. Однако описание заголовка имеет 2 отличия: прежде всего, для функций используется ключевое слово function. Кроме того, поскольку функции всегда возвращают результат, завершается строка заголовка типом возвращаемого значения. Таким образом, для объявления функции мы получаем следующий синтаксис:

function <Имя> [(параметры)] : <тип результата>;

Возвращаемое значение может быть любого типа, кроме файлового. Что касается дальнейшего описания функции, то оно полностью аналогично таковому для процедур. Единственным дополнением является то, что в теле функции обязательно должна присутствовать хотя бы одна операция присваивания, в левой части которой должно быть либо имя функции, либо ключевое слово result. Именно это выражение и определяет возвращаемое функцией значение.

Рассмотрим пример функции, которая будет возвращать куб числа, переданного ей в качестве аргумента:

function cube(value: integer) : integer; result := value * value * value; }

Здесь определена функция, имеющая параметр value типа целого числа, которое она возводит в третью степень путем троекратного умножения, и результат присваивается специальной переменной result. Таким образом, чтобы в любом месте программы вычислить значение числа в 3-й степени, достаточно написать такое выражение:

x = cube(3);

В результате выполнения этого выражения переменной x будет присвоено значение 27. Данный пример иллюстрирует использование функций в классическом случае - для явного вычисления значения переменной. Однако функции могут использоваться в выражениях и напрямую. Например, можно поставить вызов функции cube в каком-либо месте арифметического выражения подобно обычной переменной:

x := a + cube(b) / 2;

Подобно процедурам, функции так же могут быть встроенными. Кроме того, функции могут включать в себя не только локальные функции, но и процедуры. Впрочем, верно и обратное - в процедурах могут использоваться локальные функции. Например, в той же процедуре TriplePrint можно было бы использовать не процедуру, а функцию PrepareStr, которая принимала бы строку и возвращала ее же в кавычках:

procedure TriplePrint(str: string); function PrepareStr(s: string) : string; begin result := '"'+s+'"'; end; var i: integer; begin for i := 1 to 3 do begin writeln(PrepareStr(str)); // функция использована как переменная end; end;

Как уже отмечалось, помимо специальной переменной result, в функциях можно использовать другую автоматически объявляемую переменную, имя которой соответствует имени функции. Так, для функции cube имя переменной также будет cube:

function cube

Наши рекомендации