Форум программистов, компьютерный форум, киберфорум
Наши страницы

Delphi для начинающих

Войти
Регистрация
Восстановить пароль
 
falcon178
0 / 0 / 0
Регистрация: 27.01.2014
Сообщений: 8
#1

Проверка на совпадение + проверка строки на содержание спец. символов - Delphi

02.12.2014, 00:18. Просмотров 1136. Ответов 2
Метки нет (Все метки)

В общем ситуация такая: есть типизированный файл, форма для добавления пользователей (которые пишутся в файл). Для записи данных использую record. Все записи пишу в динамический массив dataMas. При запуске проги появляется окно аутентификации (логин/пароль). Теперь суть проблемы:
1.
Delphi
1
2
3
4
5
6
7
8
9
10
11
   for i := Low(dataMas) to High(dataMas) do begin        
      if (dataMas[i].Name = EditLog.Text) And (dataMas[i].Password = EditPwd.Text) then begin
        if dataMas[i].Name = 'ADMIN' then FAdmin.Show  //открыть админскую форму
          else FUser.Show; //открыть пользовательскую форму
        FAuth.Hide;
        Exit;  
        end
        else begin //если введёного логина в файле нет, выводить ошибку.
            MessageDlg('Invalid login or password!', mtError, [mbOk],0 );
            Exit;
         end;//else
Если нет ветки else, то всё нормально работает (ну т.е. при неправильном логине ничего не происходит, а при совпадении открывается нужная форма). Если ветка else есть, то корректно определяет только первую запись (ADMIN), на остальные выдаёт ошибку. Не пойму в чём дело.

2.
И второй вопрос! Нужно проверить строку на наличие в ней знаков пунктуации и цифр.
Кликните здесь для просмотра всего текста

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
procedure TFUser.ButtonOKUClick(Sender: TObject);
var
  Login : String[15];
  Pwd : String[15];
  NewPwd : String[15];
 
  i : Integer;
  n : Integer; //счётчик проверки на ограничения
  ChkSymb :  Boolean; //флаг наличия знаков
  ChkNum : Boolean; //флаг цифр
 
  symb : array of char := ['.',',','-',':',';','!','?','(',')','"'];
  numbers : array of Integer := [0..9]; 
 
begin
  Label1.Hide;
  Login := FAuth.EditLog.Text;
  Pwd := FAuth.EditPwd.Text;
  ChkSymb := False;
  ChkNum := False;
 
  //SetLength(numbers,10);
 
  symb := ['.',',','-',':',';','!','?','(',')','"'];
  numbers := [0..9];
  if (EditOldPwd.Text = Pwd) And (EditNewPwd.Text = EditConPwd.Text) then begin
    for i := Low(dataMas) to High(dataMas) do
      if length(EditNewPwd.Text) < 8 then begin
        MessageDlg('The new password is less then 8 characters', mtError, [mbOk],0 );
        break;
      end;
      if dataMas[i].Name = Login then begin
       
        if dataMas[i].Restrictions = True then begin
          NewPwd := EditNewPwd.Text;
          for n:=1 to length(NewPwd) do begin
            if NewPwd[n] in symb then ChkSymb:=True;
            if NewPwd[n] in numbers then ChkNum:=True;
            if (ChkSymb = False) AND (ChkNum = False) then begin
              MessageDlg('the new password does not match the security policies ',
                mtError, [mbOk],0 );
              beep;
              EditNewPwd.Clear;
              EditConPwd.Clear;
              break;
            end;//if Chk
          end;//for
        end;//if Restrictions
 
      
        dataMas[i].Password := EditNewPwd.Text;
        dataMas[High(dataMas)].ChangePwd := False;
      end;//if


Выдаёт ошибку в строках:
if NewPwd[n] in symb then ChkSymb:=True;
if NewPwd[n] in numbers then ChkNum:=True;
И ругается на массив symb : array of char := ['.',',','-',':',';','!','?','(',')','"'];

Помогите пожалуйста.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.12.2014, 00:18
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Проверка на совпадение + проверка строки на содержание спец. символов (Delphi):

Проверка на совпадение с массивом - Delphi
Есть какой-то рэндомно заполненный целочисленный массив. Берется он из файла. Есть какое-то рэндомное целое число. Задается ессно...

проверка содержимого строки символов - Delphi
Имеется строка символов. Нужно программным путём определить состоит ли строка из цифр. Подскажите, плз, путь наименьшего сопротивления!

Проверка в Srtinggrid вводимых данных на совпадение в строке - Delphi
Всем привет!!! помогите кто чем может) В чём суть, имеется таблица в которой хранится расписание. В строках пары, в столбцах группы, нужно...

Проверка ввода символов - Delphi
Всем доброго утра. Хочу спросить: кто знает, как запретить вставку текста из буфера в поле Edit (в тоже время цифры должны вставлятся)?

Проверка вводимых символов. - Delphi
Подскажите как сделать цикл, что бы сопоставлял введённый символ с массивом допустимых значений. примерный код: procedure...

Проверка символов в строке - Delphi
Народ помогите пожалуйста мне надо в переменной типа стринг, где у меня записаны 2 русские буквы, мне надо сделать условие где первая буква...

2
northener
пофигист широкого профиля
3157 / 2210 / 471
Регистрация: 15.07.2013
Сообщений: 12,899
02.12.2014, 01:20 #2
Цитата Сообщение от falcon178 Посмотреть сообщение
В общем ситуация такая: есть типизированный файл, форма для добавления пользователей (которые пишутся в файл). Для записи данных использую record.
Объявление рекорда в студию.
Цитата Сообщение от falcon178 Посмотреть сообщение
Выдаёт ошибку в строках:
if NewPwd[n] in symb then ChkSymb:=True;
А нафига было качать версию Дельфи Д2009+? Чем любимая всеми учащимися и их преподавателями Д7 не устроила?
0
falcon178
0 / 0 / 0
Регистрация: 27.01.2014
Сообщений: 8
02.12.2014, 16:47  [ТС] #3
northener,
Delphi
1
2
3
4
5
6
7
8
type
  data = record
  Name : String[15];
  Password : String[15];
  Blocked : Boolean;
  Restrictions : Boolean;
  ChangePwd : Boolean;
end;
Проверка на совпадение + проверка строки на содержание спец. символов
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.12.2014, 16:47
Привет! Вот еще темы с ответами:

Проверка ввода символов в StringGrid - Delphi
Есть такая проблема, нужно при вводе в StringGrid отслеживать вводимые символы. Нужно это для того, что бы пользователь не смог туда ввести...

Проверка вводимых в Edit символов - Delphi
Здравствуйте. Помогите делать так, чтобы в Edit'ах 1 и 2 вводилась только 1 запятая и что бы после стирания её можно было вводить. Код: ...

Проверка наличия определенных символов в Edit - Delphi
дано 1 edit состоящий из 20 элементов и баттон, условия: есть ли там такие элементы&quot;.&quot; и &quot;пробел&quot; и буква&quot;Д&quot; ,если есть то...

Проверка наличия сочетаний символов в тексте - Delphi
procedure TForm1.Button1Click(Sender: TObject); Var st: string; n: string; i: integer; begin n:=edit1.Text; if n=',' then ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru