Форум программистов, компьютерный форум, киберфорум
Наши страницы
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
falcon178
0 / 0 / 1
Регистрация: 27.01.2014
Сообщений: 8
1

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

02.12.2014, 00:18. Просмотров 1527. Ответов 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
Ответы с готовыми решениями:

проверка содержимого строки символов
Имеется строка символов. Нужно программным путём определить состоит ли строка...

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

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

Проверка ввода символов
Всем доброго утра. Хочу спросить: кто знает, как запретить вставку текста из...

Проверка символов в строке
Народ помогите пожалуйста мне надо в переменной типа стринг, где у меня...

2
northener
пофигист широкого профиля
3427 / 2326 / 631
Регистрация: 15.07.2013
Сообщений: 13,776
02.12.2014, 01:20 2
Цитата Сообщение от falcon178 Посмотреть сообщение
В общем ситуация такая: есть типизированный файл, форма для добавления пользователей (которые пишутся в файл). Для записи данных использую record.
Объявление рекорда в студию.
Цитата Сообщение от falcon178 Посмотреть сообщение
Выдаёт ошибку в строках:
if NewPwd[n] in symb then ChkSymb:=True;
А нафига было качать версию Дельфи Д2009+? Чем любимая всеми учащимися и их преподавателями Д7 не устроила?
0
falcon178
0 / 0 / 1
Регистрация: 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

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

Проверка вводимых в Edit символов
Здравствуйте. Помогите делать так, чтобы в Edit'ах 1 и 2 вводилась только 1...

Проверка ввода символов в StringGrid
Есть такая проблема, нужно при вводе в StringGrid отслеживать вводимые символы....


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

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

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