Урок 3 - Конструкция IF...THEN...ELSE
Здравствуйте, в этом уроке я познакомлю вас с конструкцией if...then...else и мы напишем программу проверки логина и пароля!
И так, приступим! Конструкцией if...then...else можно проверять какое-нибудь условие, дословно она переводится так: если...то...иначе.
Конструкция имеет такой вид:
if (условие) then begin //Если условие верно, выполняем действия end else begin //Если условие не верно, выполняем действия end;Кстати, после двойного слеша "//" пишется комментарий. Он никак не влияет на код программы, потому что компилятор его игнорирует.
Теперь я попытаюсь вам объяснить всё на практике. Открываем Delphi и создаем новый проект.
Кидаем на форму уже знакомые нам компоненты Button, Label 3 штуки и еще не знакомый Edit 2 штуки (он находится правее от компонента Label).
Edit, это Ученик. Ученик, это Edit. Вот я вас и познакомил :)
Извините за мой глупый юмор, Edit это обычное поле ввода, которое встречается в повседневной жизни, например при регистрации на сайте.
Располагаем компоненты так, как показано на рисунке:
Переходим в инспектор объектов и изменяем свойства у компонентов по очереди:
- Label1.Caption = 'Логин'
- Label2.Caption = 'Пароль'
- Label3.AutoSize = False Выставив значение False у свойства AutoSize, мы запретили автоматически менять размер компоненту
- Label3.Caption = ' ' Когда мы стёрли весь текст, размер компонента не изменился
- Edit1.Text = ' '
- Edit2.Text = ' '
- Button1.Caption = 'Авторизоваться'
Нужно изменить еще одно свойство у компонента Label3, оно называется Alignment и отвечает за выравнивание текста по центру. Выставляем значение taCenter. Теперь весь текст будет появляться в этом лейбле по центру.
Мы завершили с настройкой формы, теперь создаем обработчик OnClick на нашей кнопке. И так, принцип работы нашей программы: если логин и пароль верны, то оповещаем об этом, иначе - выдаем ошибку.
Начнем с простого - проверка логина:
procedure TForm1.Button1Click(Sender: TObject); begin if Edit1.Text = 'admin' then //Если логин верный, то... begin Label3.Caption:='Вы авторизованны!'; //Авторизовываем пользователя end else //Иначе begin Label3.Caption:='Логин не верный!'; //Выдаем ошибку end; end;Компилируем программу и вводим в наш Edit1 слово admin, нажимаем на кнопку и вуаля - Label3 оповестит о том, что мы авторизованы, теперь напишите что-нибудь другое в Edit1 и нажмите на кнопку. Label3 оповестит, что логин не верный.
Идем дальше - проверяем логин и пароль. Так как нужно проверять 2 условия, каждое из условий нужно окружить скобками, а между скобок напишем ключевое слово and:
procedure TForm1.Button1Click(Sender: TObject); begin if (Edit1.Text = 'admin') and (Edit2.Text = 'pass') then //Если логин И пароль верны то... begin Label3.Caption:='Вы авторизованны!'; //Авторизовываем пользователя end else //Иначе begin Label3.Caption:='Логин ИЛИ пароль не верный!'; //Выдаем ошибку end; end;Компилируем программу и проверяем правильность работы кода.
Идем дальше - так же проверяем логин и пароль, но теперь между условиями напишем ключевое слово or вместо and это означает что авторизация пройдет если верно хоть одно из условий:
procedure TForm1.Button1Click(Sender: TObject); begin if (Edit1.Text = 'admin') or (Edit2.Text = 'pass') then //Если логин ИЛИ пароль верны то... begin Label3.Caption:='Вы авторизованны!'; //Авторизовываем пользователя end else //Иначе begin Label3.Caption:='Логин И пароль не верны!'; //Выдаем ошибку end; end;Вернемся к коду, где использовали ключевое слово and между условиями. У нас там выдается ошибка 'Логин ИЛИ пароль не верный', если пользователь ошибся. Давайте сделаем ошибку конкретней, чтобы она сообщала, что именно не верно, логин или пароль? Для этого сотрем нашу не конкретную ошибку и добавим еще 3 конструкции if...then. Вместо знака равенства в условии, мы будем использовать знак не равенства <>
procedure TForm1.Button1Click(Sender: TObject); begin if (Edit1.Text = 'admin') and (Edit2.Text = 'pass') then //Если логин И пароль верны то... begin Label3.Caption:='Вы авторизованны!'; //Авторизовываем пользователя end else //Иначе begin if Edit1.Text <> 'admin' then //Если логин не верный begin Label3.Caption:='Логин не верный!'; //Выдаем ошибку end; if Edit2.Text <> 'pass' then //Если пароль не верный begin Label3.Caption:='Пароль не верный!'; //Выдаем ошибку end; if (Edit1.Text <> 'admin') and (Edit2.Text <> 'pass') then //Если логин и пароль не верны begin Label3.Caption:='Логин и пароль не верны!'; //Выдаем ошибку end; end; end;Компилируем и проверяем! У меня всё работает, а у вас? Пишите в комментариях, если возникли трудности.
Да, чуть не забыл, на последок хочу вам показать еще один компонент, так называемый XPManifest, он находится на вкладке Win32 (самый последний компонент на этой вкладке). XPManifest восстанавливает вид всех компонентов из классического вида в тот, который сейчас используется в системе. Добавив его на форму, мы увидим прекрасные кнопочки :)
Задание на закрепление: дополнить в программу несколько пользователей со своими паролями.
Ну вот и всё! Удачи!
Встретимся в следующем уроке!
Добавил(а): 4eJloBeK | Дата: 2012-08-08 | |
Проверка логина - можно сказать скопировал код из урока, но все равно не компилирует. Вот эта ошибка-[Error] Login.pas(44): Declaration expected but end of file found.
В чем может быть ошибка?
|
Добавил(а): Programer | Дата: 2012-08-01 | |
Спасибо огромное за этот урок и за этот компонент XPManifest теперь с помощью этого компонента мои программы выглядят современнее
|
Добавил(а): Admin | Дата: 2012-08-01 | |
А я еще думал, рассказывать про этот компонент или нет...
|
Добавил(а): Admin | Дата: 2012-08-09 | |
Проверь соответствие begin end.
|
Добавил(а): 4eJloBeK | Дата: 2012-08-09 | |
Проверил, все верно, код точно такой же как и в уроке, не компилирует( мб стоит скачать другой/переустановить Delphi? у меня стоит Delphi 7.
|
Добавил(а): Admin | Дата: 2012-08-09 | |
Переустанавливать Delphi из-за ошибки - глупо. Скопируй весь код своей программы мне в ЛС. Возможно в коде (в самом конце) не стоит заключительный "end."
|
Добавил(а): 4eJloBeK | Дата: 2012-08-09 | |
насчет переустановки-спасибо, буду знать, код кидаю в лс.
|
Добавил(а): SyGaK | Дата: 2012-10-05 | |
Ребята, не могу найти свойство Alignment. Можно бы скрин где он находится?
|
Добавил(а): SyGaK | Дата: 2012-10-05 | |
Ах да, все. Нашел, сайт 5+
|
Добавил(а): Admin | Дата: 2012-10-06 | |
SyGaK, спасибо, очень приятно!
|
Добавил(а): eXstra | Дата: 2013-01-08 | |
очень хороший урок
|
Добавил(а): Programer | Дата: 2013-05-01 | |
Конечно вопрос не к теме относится но всё же спрошу кто знает где можно скачать Windows 8 X64 bit?
|
Добавил(а): Admin | Дата: 2013-05-01 | |
Programer, гугл не помогает уже?
http://rutracker.org/forum/viewtopic.php?t=4386639
|
Добавил(а): Programer | Дата: 2013-05-02 | |
А X64 bit версия активирована навсегда ?
|
Добавил(а): Admin | Дата: 2013-05-02 | |
Нет, там же написано, что активатор пока на 180 дней, потом можно вновь активировать. Хотя, лично у меня винда больше 4 месяцев не стоит
|
Добавил(а): Ulibrext | Дата: 2013-05-11 | |
Извеняюсь за тугоумие не понял куда вписывать других пользователей!
|
Добавил(а): delfiSkin | Дата: 2013-05-15 | |
изучал до этого паскаль,как то там было поменьше *begin* и *end* при работе с if then else, а здесь можно как-то укратить их количество?
|
Добавил(а): Admin | Дата: 2013-05-16 | |
Конечно, если после условия выполняется одно действие, то можно записать без begin и end. Например: if a=b then a=1;
|
Добавил(а): Asyanya | Дата: 2013-06-05 | |
При добавлении новых пользователей, программа поступает следующим образом:
- если ввожу правильную пару логин-пароль, то программа выдает "Вы авторизованы!"
- если ввожу одно значение неправильным, то программа выдает "Логин И пароль не верны!"
Где я напортачила?
|
Добавил(а): RinDproramer | Дата: 2013-07-14 | |
Решил написать простенькую компьютерную игру, только сколько нужно
условий(if).И даже получается условие в условии:
if (условие) then
begin
if (условие) then
begin
end
else
begin
end;
end
else
begin
end;
|
Добавил(а): CrossF1re5 | Дата: 2013-09-05 | |
Вообшем у меня проблема заключается в том что даже при банальной компиляции 1 кода -проверка логина вылетает ошибка!!!33 раза переписывал,копипастил и.т.д толку 0 может у меня проблема в самом Delphi?Что делать?
|
Добавил(а): Lammer | Дата: 2013-09-05 | |
CrossF1re5, Delphi тут не причем видимо ты что то намудрил кинь свой код..
Совет: Скачай СnPack очень полезная вещь показывает закрыл ты полностью процедуру или нет
|
Добавил(а): CrossF1re5 | Дата: 2013-09-05 | |
Lammer спс уже разобрался !
|
Добавил(а): мультик | Дата: 2013-11-05 | |
я ароде всё правильно прописал а компиляция не происходит
|
Добавил(а): Lammer | Дата: 2013-11-09 | |
мультик ,в чем ошибка то скинь мне сво
|
Добавил(а): sema- 2014 | Дата: 2013-12-03 | |
Добавил компонент XPManifest, на прогу и ничего в проге не изменилось, всё как было, до этого компанента, может что не допонял я ?... никаких кнопочек новых не появилось, прога не изменилась, вообще никаких изменений на проги не вижу, что с этим компанентом, что без него, не понял в чём его фишка?.
|
Добавил(а): sema- 2014 | Дата: 2013-12-03 | |
А так урок суперский!!! понятней всяких томов по программированию, где всё написано на фалехов - гонте - хоселапе!!!
Учителю респект и Уважуха!!!
|
Добавил(а): Program | Дата: 2013-12-26 | |
А как сделать чтоб в программе можно было новый аккаунт создать?
|
Добавил(а): RinDproramer | Дата: 2013-12-31 | |
Если создать систему создания новых аккаунтов, то программа расширится в 2-3 раза. Во первых нужно создать файл хранения аккаунтов, во вторых нужно чтобы Делфи распознавал эти аккаунты, в третьих нужно делать доп. условия, для проверки правильности введенных данных.
|
Добавил(а): Samil | Дата: 2014-01-16 | |
А какая разница написать столько "begin" и "end".
Я написал только с двумя "begin" и "end" в начале и в конце и все работает нормально.
|
Добавил(а): RamaL | Дата: 2014-01-29 | |
Spasibo za uroki ya yeshe ne vstrechal takix ponyatnix urokov kak v etom sayte... esheraz spasibo
|
Добавил(а): zhambylgaziz | Дата: 2014-04-05 | |
admin, я сделал проект новый и включил туда if then elsе, но у меня не как этот а другой, и вот он показывает в строке где написано условие есть ошибка, что то должно быть булеан
|
Добавил(а): Enselensess | Дата: 2014-04-27 | |
admin, привет Сайт отличный, Спасибо
У меня вопрос, вот как можно ONClick Event cделать и на кнопке Enter, я вот попробовала, но к сожалению, не получается. Спасибо, еще раз
|
Добавил(а): Admin | Дата: 2014-04-27 | |
Enselensess, у большинства компонентов есть событие OnKeyDown, сравнивайте в этой процедуре (например у Edit2) переменную Key с кодом клавиши Enter. Например: if (Key = VK_RETURN) then ...
|
Добавил(а): belogod | Дата: 2014-05-21 | |
Круто. И огромное Вам спасибо. Главное, что всё понятно, без глюков и на будущее пригодится.
|
Добавил(а): Dianne_Fox | Дата: 2014-10-07 | |
у меня при первой же компиляции вылетают ошибки, код точь в точь такой же, даже не знаю в чем проблема
|
Добавил(а): Lammer | Дата: 2014-10-12 | |
про OR то забыли
|
Добавил(а): Nothing | Дата: 2014-12-01 | |
Скиньте пожалуйста файл для скачивания с готовой программой
|
Добавил(а): azzell999 | Дата: 2014-12-07 | |
Доброго времени суток! не могу компилировать... выдает ошибку. Подскажите пожалуйста что делать, переписывал уже кучу раз)
|
Добавил(а): azzell999 | Дата: 2014-12-07 | |
Разобрался! Ложная тревога! урок замечательный спасибо админ!
|
Добавил(а): Artemjke | Дата: 2015-01-14 | |
Уже 2 часа сижу голову ломаю, как других пользователей добавить, может кто-нибудь подскажет код?
P.S. Спасибо за уроки отличный сайт
|
Добавил(а): Weller | Дата: 2015-04-30 | |
Я тоже не смог сделать еще несколько пользователей..
|
Добавил(а): Volodymyr | Дата: 2015-07-26 | |
Спасибо за урок! Все вышло!
|
Добавил(а): nicmir | Дата: 2015-08-03 | |
Здравствуйте
Отличный урок! У меня вот есть маленькое дополнение, возможно кому-нибудь пригодится. Обычно при вводе пароля, реальные символы скрываются. А вместо них видны точечки или звёздочки. Что бы добавить такую возможность, нужно у компонента edit2 найти свойство PasswordChar и указать в нём символ (звёздочку например), которым будут заменяться символы при вводе.
|
Добавил(а): RootKit | Дата: 2016-01-08 | |
Спасибо за урок. Давно хотел научиться. Школьная программа и университет 2 семестра не дали результатов. Тут все понятно, сам быстро разбираешься.
|
Добавил(а): erbuz | Дата: 2016-01-14 | |
чот код задания не отправился
|
Добавил(а): erbuz | Дата: 2016-01-14 | |
/les/les3.php
|
Добавил(а): sirynka | Дата: 2016-04-03 | |
после того как добавил елемент XPManifest пропадает кнопка, но если я наведу курсор на место кнопки она возвращаеться как быть?
|
Добавил(а): pashok | Дата: 2016-07-11 | |
Здравствуйте, все было понятно, кроме того, как добавить еще пользователей.
|
Добавил(а): qwerty001 | Дата: 2016-08-25 | |
У меня ошибки выходят в делфи почему
|
Добавил(а): kirill.abdulov | Дата: 2016-08-28 | |
Я много видел различных сайтов с уроки изучения Delphi но этот сайт , шикарен
|
Добавил(а): nadia010897 | Дата: 2016-09-17 | |
не получилось добавить других пользователей
|
Добавил(а): vol4ek | Дата: 2016-12-23 | |
Доброе время суток друзья.
У меня программа почему то поступает так:
Если ввожу правильную пару логин-пароль, то программа выдает "Вы авторизованы!" - если ввожу одно значение неправильным, то программа выдает "Логин и пароль не верны!"
Где мог запороть проверил код несколько разв се верно.
И еще вопросик по XPManifest как его правильно добавить как не пробовал ничего не меняется.
Спасибо оч жду ответы.
|
Autoblogging Pro combined with ChatGPI API can create a range of content based on your specifications and usig their WorPress plugin,
automatically uploads the new article, complete with image, ready to edit an go live quicklly.
Autoblogging Pro offers a variety of packages to suit your needs.
LIFETIME FREE - FREE- 4 Articles per/month
BASIC PLAN - $29 - 70 Articles per/month
PRO PLAN - $49 -135 Articles per/month
PRO PLUS PLAN - $89 -290 Articles per/month
https://bit.ly/3s3ogYT
Build Your Ad Revenues and SEO Market Share with Autoblooging Pro! Set Up is Fast an Easy with Great Technical Support!
Try it FREE!