Создание простейшего приложения 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Создание простейшего приложения



Запрограммируем нахождение суммы двух целых чисел. Для решения задачи запускаем среду TD и в ней выполняем команду File/New/ VCL Forms Application – Delphi for Win32. На появившейся форме имеется заголовок Form1, данный средой по умолчанию. В инспекторе объектов (Object Inspector) на вкладке Properties (Свойства) в группе Action находим свойство Caption и заменяет его заголовком “Сумма двух целых чисел”. После этого выбираем на вкладке Standard палитры компонентов (Tool Palette) объект типа TLabel (щелчок левой кнопки мыши по нему). Этот объект будет представлять надпись на форме. Затем устанавливаем указатель мыши в то место на форме, от которого пойдет надпись, и производим щелчок. В результате на форме появляется выделенная надпись Label1. Изменяем описанным ранее способом ее свойство Caption на “Слагаемое 1”. Если не устраивают вид и размер шрифта надписи (по умолчанию Tahoma 10 пунктов), то изменяют их. Для этого в нижней части вкладки свойств надписи находят свойство Font (Шрифт) и выполняют щелчок мышью правее – по (TFont). В окне диалога производят соответствующие установки. Созданную надпись можно перемещать мышью по форме. В ответ на произведенные действия среда добавила в описание типа TForm1, к которому относится создаваемая форма, метку Label1, в чем можно убедиться после щелчка по вкладке Code. Теперь необходимо в режиме конструирования формы (вкладка Design) разместить под созданной надписью объект типа TEdit – компонент ввода первого слагаемого. Для

удаления ненужной надписи Edit1 находят свой-

ство Text объекта и очищают его. Аналогично по-

ступают с компонентами второго слагаемого, но

возможен другой вариант действий, ускоряющий процесс проектирования. Выделяют мышью оба компонента и копируют их в буфер обмена. Для этого вызывают щелчком правой кнопки мыши в пределах выделенного контекстное меню, в котором выбирают Edit/Copy (горячие клавиши <Ctrl>+<C>). Для вставки компонентов из буфера вызывают контекстное меню и выполняют команду Edit/Paste (<Ctrl>+<V>). Мышью переносят и выравнивают объекты на форме, изменяют заголовок у Label2 – “Слагаемое 2”. Аналогично создают Label3 “Сумма” и Edit3, как показано на следующем рисунке. Затем выбирают компонент TButton (Кнопка), раз мещают его между слагаемыми и суммой и делают надпись “Сложить” на этой кнопке. Интерфейс пользователя практически готов, но в нем пока отсутствует механизм получения результата, т.е. суммы двух чисел.

Суммирование при работающем приложении должно происходить по щелчку по кнопке Button1 “Сложить”. Создадим обработчик названного события. С этой целью производят двойной щелчок по Button1. Он приводит к добавлению средой в тип TForm1 метода – процедуры обработки щелчка (клика) – и формированию его заготовки, приведенной ниже.

procedure TForm1.Button1Click(Sender: TObject);

begin

 

end;

Процедуре не хватает локальных переменных, отвечающих за получение результата. В данном примере можно обойтись и без них, но они улучшают процесс понимания действий с данными. Итак, вводим после заголовка процедуры раздел описания переменных sl1, sl2, summa. В теле процедуры пишем два оператора для получения значений слагаемых из строк ввода Edit1 и Edit2. Поскольку слагаемые являются целыми числами, необходимо преобразовать вводимый в строки набор символов (за него отвечает свойство Text) в целые числа. Это производят функции преобразования строки в число. При выводе полученной суммы в строку Edit3 необходимо выполнить обратное преобразование целого числа в строку. Несущие смысловую окраску прописные буквы в именах способствуют легкому прочтению длинных имен. Имена свойств компонентов пишутся через точку после имен самих компонентов (как поля записи). Приведем текст метода полностью.

procedure TForm1.Button1Click(Sender: TObject);

var

sl1, sl2, summa: integer;

begin

sl1:= StrToInt(Edit1.Text); //Преобразование строки в число

sl2:= StrToInt(Edit2.Text);

summa:= sl1 + sl2;

Edit3.Text:= IntToStr(summa); //Преобразование числа в строку

end;

Для набора названия какого-то стандартного объекта Delphi или его свойства можно написать только часть его имени, а потом нажать клавши <Сtrl>+<Пробел>. Возникнет ниспадающее окно, в котором перечислены все свойства метода, а также переменные и любые ключевые слова, начинающиеся с введенного текста. Выбрав нужное, нажимают <Enter>, и Delphi автоматически завершает начатое слово. Используйте эту возможность, когда вы пишете длинные названия свойств или методов. Напишите только начало, а потом произведите выбор из списка нужного варианта. Если список большой и вы сразу не видите нужного слова, то продолжайте писать. По мере набора букв список будет уменьшаться. Таким путем можно уменьшить вероятность возникновения ошибки при наборе длинных имен. И еще несколько полезных приемов. Чтобы сдвинуть выделенный код вправо, нажмите клавиши <Ctrl>+<Shift>+<I>. Чтобы сдвинуть строки обратно, нужно нажать клавиши <Ctrl>+<Shift>+<U>. Когда вы работаете с кодом, то в окне видите только определенную его часть в зависимости от размеров окна. Если вам надо увидеть код, расположенный чуть ниже, то можно сдвинуть экран полосой прокрутки. Но в этом случае надо использовать мышь. А можно нажать клавиши <Сtrl>+<Стрелка вверх> или <Сtrl>+<Стрелка вниз>.

Созданное нами простое приложение далеко от совершенства. В случае отсутствия одного или двух операндов попытка получения результата приводит к исключительной ситуации в работе программы. Такие ситуации коротко называют исключениями (от английского Exception). Их надо предвидеть и предпринять необходимые меры защиты, например так:

begin

if (Edit1.Text = '') or (Edit2.Text = '')

then ShowMessage('Не хватает слагаемых')

else begin

sl1:= StrToInt(Edit1.Text);

sl2:= StrToInt(Edit2.Text);

summa:= sl1 + sl2;

Edit3.Text:= IntToStr(summa);

end;

end;

Процедура ShowMessage с параметром типа string выводит на экран окно с сообщением, представленным строкой. Но может возникнуть ошибка другого рода, когда вместо цифр вводятся другие символы. Для защиты от подобного ввода следует создать процедуру обработчика события, связанного с нажатием на клавишу при вводе в Edit1 и Edit2. Начнем с Edit1: выделим его на форме и на вкладке Events (События) в группе Input (Ввод) выполним двойной щелчок на пустом поле справа от события OnKeyPress. В результате окно редактора кода получит фокус, и у нас появится возможность написать обработчик нажатия клавиши:

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);

begin

if not (Key in ['0'..'9', '+', '-', #75, #77, #83]) then

begin

ShowMessage('Недопустимый символ');

Key:= #0 //Символы редактирования:

end; // #75 <--; #77 -->; #83 DEL;

end;

 

Типы данных в Delphi

Язык Delphi базируется на известных по языку Turbo Pascal простых типах данных: целых, вещественных, символьных и логических. Однако в нем появились новые имена типов, а некоторые типы получили другие диапазоны допустимых значений. Характеристики типов даны далее.

Таблица целых типов

Тип VCL Win32 Диапазон значений Память, байт
Byte 0…255  
Word 0…65535  
Longword 0…4294967295  
Cardinal 0…4294967295  
Shortint -128…127  
Smallint -32768…32767  
Integer -2147483648… 2147483647  
Longint -2147483648…2147483647  
Int64 -263…263-1  

 

Для целых типов наивысшую производительность обеспечивают Integer и Cardinal, для вещественных типов, представленных в следующей таблице, – тип Real, эквивалентный в этой версии языка типу Double. Наименьшее по абсолютной величине и наибольшее значения для типов Single, Double, Extended и Comp можно узнать с помощью констант модуля Math, имя которых начинается с Min или Max соответственно и продолжается именем типа, например MaxDouble – наибольшее значение в Double.

Таблица вещественных типов

Тип VCL Win32 Диапазон значений Память, байт
Single 1.5·10-45…3.4·1038  
Real48 2.9 ·10-39…1.7·1038  
Real 5.0 ·10-324…1.7·10308  
Double 5.0 ·10-324…1.7·10308  
Extended 3.4 ·10-4932…1.1·104932  
Comp -263+1…263-1  
Currency -922337203685477.5808… 922337203685477.5807  

 

Для работы с логическими переменными предпочтительнее использовать тип Boolean. Символьные данные описывают с помощью родового типа Char. Можно также использовать типы AnsiChar и WideChar. Первый из них описывает символы, представленные в кодировке ANSI (Американский национальный институт стандартов), и требует одного байта для хранения символа; второй – в кодировке Unicode и требует двух байтов памяти. Тип Char является универсальным и позволяет перемещать код между различными видами приложений.

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

Тип строки Максимальная длина Память #0 в конце строки
ShortString   ≤ 256 байт Нет
AnsiString ~ 2 Гб ≤ 2 Гб Есть
String ~ 2 Гб ≤ 2 Гб Есть или нет
WideString ~ 1 Гб ≤ 2 Гб Есть

 

Родовым для Delphi является тип String, но он имеет разный смысл в зависимости от типа приложения и директивы компилятора $H [1]. В приложениях VCL Win32 String по умолчанию интерпретируется компилятором как AnsiString – длинная строка с завершающим нулем (#0), а с директивой {$H-} – как тип ShortString (короткая строка без #0 на конце). Если при объявлении типа после слова String следует размер строки, например String[25], то, независимо от директивы компилятора, тип трактуется как строка с числом символов не более заданного (т.е. 25) и без #0 в конце. Короткую строку используют для обратной совместимости, а основными становятся строки с завершающим нулем. Переменная типа AnsiString является указателем на область в куче (Heap), где хранится строка. Там же хранятся длина строки и число ссылок на строку. Строки типа WideString состоят из символов Unicode. Этот тип совместим с типом BSTR, используемым для действий с объектами COM. К названным строкам применимы стандартные подпрограммы, имена которых и оказываемые действия известны из Turbo Pascal. Длина строки AnsiString в операциях присваивания отслеживается автоматически (символ #0 в длину не входит). Длину коротких и длинных строк можно изменять процедурой SetLength (stroka, NewDlina).

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

 



Поделиться:


Последнее изменение этой страницы: 2016-06-19; просмотров: 266; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.119.105.239 (0.011 с.)