Королевство Дельфи"Knowledge itself is power"
F.Bacon
 Лицей
  
Главная
О лицее

Список семинаров

 
 К н и г и
 
Книжная полка
 
 
Библиотека
 
  
  
 


Поиск
 
Поиск по КС
Поиск в статьях
Яndex© + Google©
Поиск книг

 
  
Тематический каталог
Все манускрипты

 
  
Карта VCL
ОШИБКИ
Сообщения системы

 
Форумы
 
Круглый стол
Новые вопросы

 
  
Базарная площадь
Городская площадь

 
   
С Л С

 
Летопись
 
Королевские Хроники
Рыцарский Зал
Глас народа!

 
  
ТТХ
Конкурсы
Королевская клюква

 
Разделы
 
Hello, World!
Лицей

Квинтана

 
  
Сокровищница
Подземелье Магов
Подводные камни
Свитки

 
  
Школа ОБЕРОНА

 
  
Арсенальная башня
Фолианты
Полигон

 
  
Книга Песка
Дальние земли

 
  
АРХИВЫ

 
 

Сейчас на сайте присутствуют:
 
  
 
Во Флориде и в Королевстве сейчас  19:16[Войти] | [Зарегистрироваться]

Урок 10. "Добро пожаловать или посторонним вход воспрещен"

Радик Ишмуратов
дата публикации 30-01-2004 12:56

урок из цикла: Delphi для чайников, или как научиться программировать.


предыдущий урок содержание семинара следующий урок

Урок 10. "Добро пожаловать или посторонним вход воспрещен"

Сегодня мы повторяем оператор ветвления. Создадим программу-пароль. Она будет работать следующим образом: При загрузке программа попросит ввести пароль, если Вы введете пароль правильно, программа напишет "Добро пожаловать", если пароль неверен — ответ будет "Посторонним вход воспрещен".

1. Итак, открывайте Delphi или создавайте новый проект.

Для данной программы нам потребуются следующие элементы: компонент Label (для вывода надписей на экран), компонент Edit (для ввода пароля), 2 кнопки (подтвердить ввод и выход).

2. Поместите данные элементы на форму:

рис.1
3. Изменяем свойства Caption объектов (напомню у Edit — это свойство Text)

рис. 2

Давайте поймем логику программы: что мы хотим, как будет работать программа. При загрузке необходимо будет ввести пароль. При нажатии на кнопку ОК, программа проверяет, правильно ли был введен пароль (сравнивает строку в Edit со строкой в памяти компьютера), и если пароль верен, то выводит надпись "Добро пожаловать", а строку Edit прячет; если неправильно, то выводит на экран окно с сообщением, что пароль неверен.

4. Пишем обработчик события для клавиши ОК (2 раза щелкните по кнопке, и Вы окажетесь в редакторе кода в нужном месте:

рис. 3
5. Запустите программу клавишей F9. Проверьте, как ведет себя программа. Я ввел неправильный пароль и нажал кнопку ОК, у меня открылось окно:

рис. 4


6. Вы не находите в нем ничего странного? Ведь мы написали оператор edit1.Text:='';, который должен был очистить строку ввода, а у меня там введенный пароль. На самом деле, все верно. Наш оператор стоит после строки ShowMessage — значит, он должен выполняться после него. И хотя компьютер вывел на экран сообщение (т.е. данное окно), работа оператора еще не завершилась. Оператор завершится, когда Вы нажмете ОК. И, действительно, как только Вы нажмете ОК, строка ввода очистится.

7. Самостоятельно: А сделайте так, чтобы строка ввода очищалась и тогда, когда окно сообщения на экране.

Счетчик.

Давайте усовершенствуем программу так, чтобы пользователь мог лишь несколько раз ввести пароль, например, 3 раза. Чтобы решить данную проблему, нам понадобится счетчик. Счетчик — это специальная переменная, которая увеличивается на 1 при нужном событии.

Итак, счетчиком будет переменная k (я так хочу, ВЫ же можете сделать любую).

8. Когда она должна увеличиваться? Когда введен неправильный пароль. Следовательно, он должен стоять в обработчике события кнопки ОК по ветви "нет". Измените код кнопки, добавив в него строку:
k:= k+1; 

Далее нам нужно проверить, совершено ли данное событие 3 раза, т.е. k=3 или нет, и если так, то закрыть форму. Записать данную процедуру можно следующим образом:

if k=3 then form1.close;
Посмотрите, ваша процедура должна быть похожа на мою:
procedure TForm1.Button1Click(Sender: TObject);
begin
  if edit1.Text='qqq'
  Then
  begin
    Label1.Caption:=' Добро пожаловать ';
    edit1.Enabled:=false;
  end
  Else
  begin
    ShowMessage (' Посторонним вход воспрещен ');
    edit1.Text:='';
    edit1.SetFocus;
    k:= k+1;
    if k=3 then form1.close;
  end;
end;
9. Теперь необходимо объявить новую переменную. Делается это в редакторе кода после раздела implementation. Посмотрите на рис, сделайте свой код как у меня:

рис. 5


10.Последнее, что нужно сделать, это присвоить начальное значение переменной. Где это можно сделать? В самой процедуре нельзя, потому что… ( А почему?)

Мы поступим следующим образом. Зададим начальное значение при запуске программы, т.е. при рождении формы.

11. В Инспекторе объектов выберите Form1, перейдите в раздел Events, и дважды щелкните напротив строки OnCreate (при создании). Откроется соответствующая процедура.

12.Введите оператор, как у меня:
procedure TForm1.FormCreate(Sender: TObject);
begin
  k:=0;
end;
13. Запускайте программу, наслаждайтесь!

Самостоятельно:
  1. Доделайте программу, чтобы она при неправильном пароле выводила надпись: У вас осталась 1 попытка ( или 2 или 3).
  2. Ответьте на вопрос: "Почему нельзя задавать начальное значение счетчика в процедуре нажатия клавиши?". Если не догадались, вставьте его туда, и посмотрите, что происходит.
  3. Напишите обработчик для второй кнопки Закрыть, чтобы при нажатии на нее форма закрывалась.
  4. Измените программу таким образом, чтобы на правильные и неправильные действия программа еще как-то реагировала (цветом формы, размером шрифта и т.д.).

Примечание:
данный и следующие уроки содержат практику, которую нужно много отрабатывать. Запомните, умение писать программы — это такое же практическое искусство, как и умение плавать. Сидя на берегу, плавать не научишься.

А поэтому несколько советов:
  • не ограничивайтесь моими уроками, больше работайте самостоятельно, придумывайте себе задания, создавайте небольшие программы;
  • каждый урок содержит или разъясняет один прием или тему, следовательно после каждого урока Вы сможете создавать свои собственные программы, используя новые знания.
  • если Вы придумаете задания, которые лучше моих, интереснее моих, или просто желаете поделиться своими идеями и задумками, то, пожалуйста, напишите об этом.
  • если Вам что-либо не понятно, или не получается, напишите, постраемся помочь.
Ждем писем с вашими собственными программами.


предыдущий урок содержание семинара следующий урок




Смотрите также материалы по темам:


 Обсуждение материала [ 06-01-2012 15:27 ] 9 сообщений
  
Время на сайте: GMT минус 5 часов

Если вы заметили орфографическую ошибку на этой странице, просто выделите ошибку мышью и нажмите Ctrl+Enter.
Функция может не работать в некоторых версиях броузеров.

Web hosting for this web site provided by DotNetPark (ASP.NET, SharePoint, MS SQL hosting)  
Software for IIS, Hyper-V, MS SQL. Tools for Windows server administrators. Server migration utilities  

 
© При использовании любых материалов «Королевства Delphi» необходимо указывать источник информации. Перепечатка авторских статей возможна только при согласии всех авторов и администрации сайта.
Все используемые на сайте торговые марки являются собственностью их производителей.

Яндекс цитирования