Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.65/34: Рейтинг темы: голосов - 34, средняя оценка - 4.65
0 / 0 / 1
Регистрация: 27.01.2014
Сообщений: 8
1

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

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

Author24 — интернет-сервис помощи студентам
В общем ситуация такая: есть типизированный файл, форма для добавления пользователей (которые пишутся в файл). Для записи данных использую 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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.12.2014, 00:18
Ответы с готовыми решениями:

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

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

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

Проверка строки на содержание ложных символов
Я ввожу строковую переменную и мне нужно проверить какие символы она в себе содержит. Если только...

2
пофигист широкого профиля
4755 / 3190 / 861
Регистрация: 15.07.2013
Сообщений: 18,462
02.12.2014, 01:20 2
Цитата Сообщение от falcon178 Посмотреть сообщение
В общем ситуация такая: есть типизированный файл, форма для добавления пользователей (которые пишутся в файл). Для записи данных использую record.
Объявление рекорда в студию.
Цитата Сообщение от falcon178 Посмотреть сообщение
Выдаёт ошибку в строках:
if NewPwd[n] in symb then ChkSymb:=True;
А нафига было качать версию Дельфи Д2009+? Чем любимая всеми учащимися и их преподавателями Д7 не устроила?
0
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
02.12.2014, 16:47
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.12.2014, 16:47
Помогаю со студенческими работами здесь

Проверка строки на содержание определенных символов
К примеру есть строка (&quot;ООО Лампа/Москва&quot;), необходимо проверить содержит ли эта строка...

Проверка строки на содержание одинаковых символов
Здравствуйте! Подскажите пожалуйста, с чего начать... Написал программу которая выбирает из файла...

Разбиение строки, и проверка каждой из подстрок на содержание определенных символов
Добрый день, друзья, надеюсь на вашу помощь. string number = (string) txtNumberCep.EditValue; ...

Проверка строки первого массива на содержание символов из строки второго массива
есть два массива по N строк, возможны пустые строки, в данном случае строки генерируются из набора...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru