Урок 3 - Конструкция IF...THEN...ELSE

Тема в разделе "Delphi", создана пользователем TiportOne, 20 июн 2016.

  1. Оффлайн

    TiportOne ст. рядовой

    На форуме с:
    25 май 2016
    Сообщения:
    21
    Симпатии:
    8
    Баллы:
    3
    Пол:
    Мужской
    Здравствуйте, в этом уроке я познакомлю вас с конструкцией if...then...else и мы напишем программу проверки логина и пароля! И так, приступим! Конструкцией if...then...else можно проверять какое-нибудь условие, дословно она переводится так: если...то...иначе.

    Конструкция имеет такой вид:

    1.if (условие) then
    2.begin
    3.//Если условие верно, выполняем действия
    4.end
    5.else
    6.begin
    7.//Если условие не верно, выполняем действия
    8.end;
    Кстати, после двойного слеша "//" пишется комментарий. Он никак не влияет на код программы, потому что компилятор его игнорирует.

    Теперь я попытаюсь вам объяснить всё на практике. Открываем Delphi и создаем новый проект.
    Кидаем на форму уже знакомые нам компоненты Button, Label 3 штуки и еще не знакомый Edit 2 штуки (он находится правее от компонента Label).

    Edit, это Ученик. Ученик, это Edit. Вот я вас и познакомил :)
    Извините за мой глупый юмор, Edit это обычное поле ввода, которое встречается в повседневной жизни, например при регистрации на сайте.
    Располагаем компоненты так, как показано на рисунке:

    [​IMG]

    Переходим в инспектор объектов и изменяем свойства у компонентов по очереди:
    • Label1.Caption = 'Логин'
    • Label2.Caption = 'Пароль'
    • Label3.AutoSize = False Выставив значение False у свойства AutoSize, мы запретили автоматически менять размер компоненту
    • Label3.Caption = ' ' Когда мы стёрли весь текст, размер компонента не изменился
    • Edit1.Text = ' '
    • Edit2.Text = ' '
    • Button1.Caption = 'Авторизоваться'
    Сейчас выделяем компонент Label3 и растягиваем его ширину на всю форму:

    [​IMG]

    Нужно изменить еще одно свойство у компонента Label3, оно называется Alignment и отвечает за выравнивание текста по центру. Выставляем значение taCenter. Теперь весь текст будет появляться в этом лейбле по центру.

    Мы завершили с настройкой формы, теперь создаем обработчик OnClick на нашей кнопке. И так, принцип работы нашей программы: если логин и пароль верны, то оповещаем об этом, иначе - выдаем ошибку.

    Начнем с простого - проверка логина:
    01.procedure TForm1.Button1Click(Sender: TObject);
    02.begin
    03.if Edit1.Text = 'admin' then //Если логин верный, то...
    04.begin
    05.Label3.Caption:='Вы авторизованны!'; //Авторизовываем пользователя
    06.end
    07.else //Иначе
    08.begin
    09.Label3.Caption:='Логин не верный!'; //Выдаем ошибку
    10.end;
    11.end;
    Компилируем программу и вводим в наш Edit1 слово admin, нажимаем на кнопку и вуаля - Label3 оповестит о том, что мы авторизованы, теперь напишите что-нибудь другое в Edit1 и нажмите на кнопку. Label3 оповестит, что логин не верный.

    Идем дальше - проверяем логин и пароль. Так как нужно проверять 2 условия, каждое из условий нужно окружить скобками, а между скобок напишем ключевое слово and:
    01.procedure TForm1.Button1Click(Sender: TObject);
    02.begin
    03.if (Edit1.Text = 'admin') and (Edit2.Text = 'pass') then //Если логин И пароль верны то...
    04.begin
    05.Label3.Caption:='Вы авторизованны!'; //Авторизовываем пользователя
    06.end
    07.else //Иначе
    08.begin
    09.Label3.Caption:='Логин ИЛИ пароль не верный!'; //Выдаем ошибку
    10.end;
    11.end;
    Компилируем программу и проверяем правильность работы кода.

    Идем дальше - так же проверяем логин и пароль, но теперь между условиями напишем ключевое слово or вместо andэто означает что авторизация пройдет если верно хоть одно из условий:
    01.procedure TForm1.Button1Click(Sender: TObject);
    02.begin
    03.if (Edit1.Text = 'admin') or (Edit2.Text = 'pass') then //Если логин ИЛИ пароль верны то...
    04.begin
    05.Label3.Caption:='Вы авторизованны!'; //Авторизовываем пользователя
    06.end
    07.else //Иначе
    08.begin
    09.Label3.Caption:='Логин И пароль не верны!'; //Выдаем ошибку
    10.end;
    11.end;
    Вернемся к коду, где использовали ключевое слово and между условиями. У нас там выдается ошибка 'Логин ИЛИ пароль не верный', если пользователь ошибся. Давайте сделаем ошибку конкретней, чтобы она сообщала, что именно не верно, логин или пароль? Для этого сотрем нашу не конкретную ошибку и добавим еще 3 конструкции if...then. Вместо знака равенства в условии, мы будем использовать знак не равенства <>
    01.procedure TForm1.Button1Click(Sender: TObject);
    02.begin
    03.if (Edit1.Text = 'admin') and (Edit2.Text = 'pass') then //Если логин И пароль верны то...
    04.begin
    05.Label3.Caption:='Вы авторизованны!'; //Авторизовываем пользователя
    06.end
    07.else //Иначе
    08.begin
    09.if Edit1.Text <> 'admin' then //Если логин не верный
    10.begin
    11.Label3.Caption:='Логин не верный!'; //Выдаем ошибку
    12.end;
    13.if Edit2.Text <> 'pass' then //Если пароль не верный
    14.begin
    15.Label3.Caption:='Пароль не верный!'; //Выдаем ошибку
    16.end;
    17.if (Edit1.Text <> 'admin') and (Edit2.Text <> 'pass') then //Если логин и пароль не верны
    18.begin
    19.Label3.Caption:='Логин и пароль не верны!'; //Выдаем ошибку
    20.end;
    21.end;
    22.end;
    Ком.пилируем и проверяем! У меня всё работает, а у вас? Пишите в комментариях, если возникли трудности.

    Да, чуть не забыл, на последок хочу вам показать еще один компонент, так называемый XPManifest, он находится на вкладке Win32 (самый последний компонент на этой вкладке). XPManifest восстанавливает вид всех компонентов из классического вида в тот, который сейчас используется в системе. Добавив его на форму, мы увидим прекрасные кнопочки :)

    [​IMG]

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

    Ну вот и всё! Удачи!
    Встретимся в следующем уроке!
     
    strelok00, xXxSKIFFFxXx и Luna_inc нравится это.
  2.  
  3. Оффлайн

    ⓈⓌⒶⒼ™

    На форуме с:
    23 дек 2012
    Сообщения:
    1.044
    Симпатии:
    1.422
    Баллы:
    640
    Пол:
    Мужской
    skype:
    barsuk690
    Одобрено! Полезная тема!
     
    Luna_inc нравится это.
  4. Оффлайн

    THQ

    На форуме с:
    6 июн 2016
    Сообщения:
    126
    Симпатии:
    17
    Баллы:
    12
    Пол:
    Мужской
    Очень полезно для новичков будет в этом деле Love Продолжай kul1
     
    Luna_inc нравится это.
  5. Оффлайн

    TiportOne ст. рядовой

    На форуме с:
    25 май 2016
    Сообщения:
    21
    Симпатии:
    8
    Баллы:
    3
    Пол:
    Мужской
    Спасибо за поддержку!:cool:;.)
     

Поделиться этой страницей

Уважаемый пользователь!

Мы обнаружили, что вы блокируете показ рекламы на нашем сайте.

Просим внести его в список исключения или отключить AdBlock.

Наши материалы предоставляются БЕСПЛАТНО и единственным доходом является реклама.

Спасибо за понимание!