Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно
MKN MKN вне форума

Ветеран


Сообщения: 2358
Благодарности: 559

Профиль | Отправить PM | Цитировать


Ввод цифрового пароля (в примере - это 77777 ) с сопроводительными сообщениями можно организовать и так :
читать дальше »
Код: Выделить весь код
OutFile 'Password-Example.exe'

!include "MUI.nsh"
!include "LogicLib.nsh"
!include "nsDialogs.nsh"
!include 'WordFunc.nsh'

Page custom ConfigPage CheckConfig '' 
!insertmacro MUI_PAGE_DIRECTORY
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_LANGUAGE 'English'
!insertmacro StrFilter

Var Password_Text
Var Password_Confirm

Function ConfigPage
!insertmacro MUI_HEADER_TEXT 'TEXT' 'HEADER_TEXT'
nsDialogs::Create 1018
Pop $0
${NSD_CreateGroupBox} 50% 0 50% 80% "                            Пароль"
${NSD_CreateLabel} 61% 20u 30% 10% '      Введите пароль'
${NSD_CreateLabel} 60% 70u 33% 10% '    Подтвердите пароль'

${NSD_CreatePassword} 65% 40u 20% 10% ''
Pop $Password_Text
${NSD_CreatePassword} 65% 85u 20% 10% ''
Pop $Password_Confirm

; максимальное количества цифр пароля
${NSD_SetTextLimit} $Password_Text 5
${NSD_SetTextLimit} $Password_Confirm 5
		
${NSD_OnChange} $Password_Text EditNotify
${NSD_OnChange} $Password_Confirm EditNotify

nsDialogs::Show
FunctionEnd

Function CheckConfig
${NSD_GetText} $Password_Text $0
${NSD_GetText} $Password_Confirm $1

${If} $0 == ''
${OrIf} $1 == ''
MessageBox MB_OK 'Введите пароль !'
Abort
${EndIf}

; ПАРОЛЬ
StrCpy $5 77777

${If} $0 != $5
MessageBox MB_OK 'Не правильный пароль ! !'
Abort
${EndIf}

${If} $0 == $5
${AndIf} $1 != $5
MessageBox MB_OK 'Не правильное подтверждение пароля !' 
Abort
${EndIf}
FunctionEnd

Function EditNotify
Pop $R0 
; считываем изменения из $R0 и заносим в переменную $0
${NSD_GetText} $R0 $0

; определяем длину строки из $0  ( заносим значение в $1 )
StrLen $1 $0 	

; фильтруем для $0 ( это $Password_Text ), ввод только цифр (для этого уст значение параметра : 1 )
; заносим результат в $2
${StrFilter} $0 '1' '' '' $2

; определяем длину строки из $2 -  ( заносим значение в $3 )
StrLen $3 $2
	
; если $1 равно любому значению, кроме равного $3
${If} $1 <> $3
MessageBox MB_OK 'Для ввода допустимы только цифры !'
${EndIf}
FunctionEnd

Section
SectionEnd

Ессно можно ещё расширить параметры проверки пароля - проверять количество вводимых символов, разбивку на группы (если надо ), сразу вызывать сообщение , если ввод не верный и т.д.

Последний раз редактировалось MKN, 23-01-2014 в 12:35.

Это сообщение посчитали полезным следующие участники:

Отправлено: 12:12, 23-01-2014 | #951