Логин: Пароль:    Регистрация Всеми возможностями сайта можно пользоваться
только после авторизации.
   Забыли пароль?
Поиск
L


Статистика
u
Пользователи онлайн: нет
Гостей онлайн: 3
Всего онлайн: 3
Зарегистрировано юзеров: 5719
Комментариев на сайте: 622
Новый юзер: FreightInfo



Последние комментарии
c
dimonsky прокомментировал "Урок 2 - Простые примитивы":
GetDC(handle) вместо canvas.handle, и убрать вызов FormResize. Тогда получается конфетка.
dimonsky прокомментировал "Урок 1 - Инициализация OpenGL":
canvas.handle не работает. Вместо этого надо GetDC(panel1.handle).



Мы в соцсетях
c
Delphi
Урок 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 и растягиваем его ширину на всю форму:

Пример формы


Нужно изменить еще одно свойство у компонента 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 восстанавливает вид всех компонентов из классического вида в тот, который сейчас используется в системе. Добавив его на форму, мы увидим прекрасные кнопочки :)

Пример работы XPManifest


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

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


Источник: www.thedelphi.ru
Автор: Савельев Александр
Опубликовано: 4 Мая 2012
Просмотров:

Урок 2 - Переменные и их типы Урок 4 - Циклы

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



аватар Добавил: Programer [Новичок] Дата: 2012-08-01
Спасибо огромное за этот урок и за этот компонент XPManifest теперь с помощью этого компонента мои программы выглядят современнее




аватар Добавил: Admin [Сэнсэй] vk.com/savelev_a_y Дата: 2012-08-01
А я еще думал, рассказывать про этот компонент или нет...




аватар Добавил(а): 4eJloBeK [Новичок] Дата: 2012-08-08
Проверка логина - можно сказать скопировал код из урока, но все равно не компилирует. Вот эта ошибка-[Error] Login.pas(44): Declaration expected but end of file found. В чем может быть ошибка?




аватар Добавил: Admin [Сэнсэй] vk.com/savelev_a_y Дата: 2012-08-09
Проверь соответствие begin end.




аватар Добавил(а): 4eJloBeK [Новичок] Дата: 2012-08-09
Проверил, все верно, код точно такой же как и в уроке, не компилирует( мб стоит скачать другой/переустановить Delphi? у меня стоит Delphi 7.




аватар Добавил: Admin [Сэнсэй] vk.com/savelev_a_y Дата: 2012-08-09
Переустанавливать Delphi из-за ошибки - глупо. Скопируй весь код своей программы мне в ЛС. Возможно в коде (в самом конце) не стоит заключительный "end."




аватар Добавил(а): 4eJloBeK [Новичок] Дата: 2012-08-09
насчет переустановки-спасибо, буду знать, код кидаю в лс.




аватар Добавил: SyGaK [Новичок] Дата: 2012-10-05
Ребята, не могу найти свойство Alignment. Можно бы скрин где он находится?




аватар Добавил: SyGaK [Новичок] Дата: 2012-10-05
Ах да, все. Нашел, сайт 5+




аватар Добавил: Admin [Сэнсэй] vk.com/savelev_a_y Дата: 2012-10-06
SyGaK, спасибо, очень приятно!




аватар Добавил(а): eXstra [Новичок] Дата: 2013-01-08
очень хороший урок




аватар Добавил: Programer [Новичок] Дата: 2013-05-01
Конечно вопрос не к теме относится но всё же спрошу кто знает где можно скачать Windows 8 X64 bit?




аватар Добавил: Admin [Сэнсэй] vk.com/savelev_a_y Дата: 2013-05-01
Programer, гугл не помогает уже? http://rutracker.org/forum/viewtopic.php?t=4386639




аватар Добавил: Programer [Новичок] Дата: 2013-05-02
А X64 bit версия активирована навсегда ?




аватар Добавил: Admin [Сэнсэй] vk.com/savelev_a_y Дата: 2013-05-02
Нет, там же написано, что активатор пока на 180 дней, потом можно вновь активировать. Хотя, лично у меня винда больше 4 месяцев не стоит




аватар Добавил(а): Ulibrext [Новичок] Дата: 2013-05-11
Извеняюсь за тугоумие не понял куда вписывать других пользователей!




аватар Добавил(а): delfiSkin [Новичок] Дата: 2013-05-15
изучал до этого паскаль,как то там было поменьше *begin* и *end* при работе с if then else, а здесь можно как-то укратить их количество?




аватар Добавил: Admin [Сэнсэй] vk.com/savelev_a_y Дата: 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 [Сэнсэй] vk.com/savelev_a_y Дата: 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
http://thedelphi.ru/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 как его правильно добавить как не пробовал ничего не меняется. Спасибо оч жду ответы.