Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.11.2010, 18:16   #1
antonov
Пользователь
 
Регистрация: 02.11.2010
Сообщений: 11
По умолчанию таймер на ввод пароля

как в прогу занести таймер на ввод пароля....нужно ввести пользователя,ввести пароль...нужно успеть ввести пароль за определенное время(например 1 минуту) если пользователь не успел ввести за это время его то прога опять запрашивает пароль и так 3 попытки
antonov вне форума Ответить с цитированием
Старый 02.11.2010, 19:37   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

а в чём сложность-то?!
Форма, когда открывается - запускает таймер.
В таймере считается время (можно, кстати, обратный отсчёт на форму выводить, будет красиво, ну, или прогресс-бар уменьшающийся рисовать).
Если время вышло - счётчик попыток - 1. Таймер сброс на начало.
Если счётчик попыток достиг 3-х - то закрывать форму.

делов на 10 минут максимум!

p.s. не забывайте указывать язык программирования, который Вам нужен...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 02.11.2010, 19:46   #3
antonov
Пользователь
 
Регистрация: 02.11.2010
Сообщений: 11
По умолчанию

мне необходимо на паскале

а не могли бы примерно написать?какая функция нужна GetTime или StartTime?
antonov вне форума Ответить с цитированием
Старый 02.11.2010, 20:26   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
мне необходимо на паскале
Delphi ? или TurboPascal ?

В зависимости от Вашего ответа,
решение будет отличаться просто принципиально!

В Delphi смотрите на TTimer
в Pascal - прийдётся или interrupt обработчик на прерывание таймерное вешать (прямо внутри программы) или, проще, в цикле получать нажатия клавиш и обрабатывать. И в этом же цикле проверять сколько "натикало"...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 02.11.2010, 21:00   #5
pray_driver
Форумчанин
 
Аватар для pray_driver
 
Регистрация: 18.08.2010
Сообщений: 140
По умолчанию

в turbo pascal это знаете ли извращение Зачем изобретать велосипед
Люди бывают десяти типов: те, кто знают двоичную систему, и те, кто нет
pray_driver вне форума Ответить с цитированием
Старый 02.11.2010, 22:30   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

pray_driver, в данном случае, это исключительно Ваше мнение.
Turbo Pascal используется во многих учебных заведениях для обучения программированию.

Поэтому, давайте не будем затевать ненужную дискуссию, а послушаем, что скажет автор топика...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 03.11.2010, 07:50   #7
antonov
Пользователь
 
Регистрация: 02.11.2010
Сообщений: 11
По умолчанию

на Turbo pascal

Последний раз редактировалось antonov; 03.11.2010 в 07:59.
antonov вне форума Ответить с цитированием
Старый 03.11.2010, 08:59   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Боже что вы городите? Серж, какие прерывания, зачем?
Все проще, это же паскаль, тут все до безобразия просто, какие могут быть извращения, если так раньше и делали.:
Код:
uses crt,dos;
var login,password:string;c:char;b,ok:boolean;

procedure Getlogin;
begin
 if c=#13 then begin
  if login='admin' then begin
   b:=true;writeln;
   write('Pass please... ');
  end else begin         writeln;
   write('Access denied...');readln;halt;
  end;
 end;
 if c in ['A'..'z'] then begin
  login:=login+c;
  write('*');
 end;
end;

procedure GetPassword;
begin
 if c=#13 then begin
  if password='aga' then begin
   ok:=true;
  end else begin writeln;
   write('Access denied...');readln;halt;
  end;
 end;
 if c in ['A'..'z'] then begin
  password:=password+c;
  write('*');
 end;
end;

const n=3;
var mb,me,h,s,se,ss:word;

begin
GetTime(h,mb,s,ss);
se:=s;
clrscr;
writeln('You have a ',n,' seconds...');
b:=false;ok:=false;
   write('Login please... ');
repeat
 if keypressed then begin
   c:=readkey;
   if not b then GetLogin else GetPassword;
 end;
 GetTime(h,me,s,ss);
until (abs(s-se)>n)or(ok);
writeln;
 if ok then
   write('Access Granted... Welcome... ')
 else
   write('You sucker.. Time is done.');
 readln

end.
И вообще даже это можно упростить
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 03.11.2010, 09:46   #9
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Stilet
Боже что вы городите? Серж, какие прерывания, зачем?
Вы не дочитали мой ответ
Цитата:
Сообщение от Serge_Bliznykov
или, проще, в цикле получать нажатия клавиш и обрабатывать. И в этом же цикле проверять сколько "натикало"...
не оно?

А за пример кода от меня лично спасибо. Ибо, пришлось бы мне подобное писать!

Добавлено
хотя, сдаётся мне, что код только сильно похож на правильный.. Надо будет его TC ещё довести до ума.
Мне, например, не понятно, где счётчик попыток.. да и 3 секунд некорректно высчитываются. Представьте, что будет,
если запусть программу в 59 секунд. Она отработает ровно секунду... и удаления неверно введённых символов (по кнопочке BackSpace) нет..

Но, в целом, всё хорошо! Зачёт!

Последний раз редактировалось Serge_Bliznykov; 03.11.2010 в 09:51.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 03.11.2010, 12:29   #10
antonov
Пользователь
 
Регистрация: 02.11.2010
Сообщений: 11
По умолчанию

Спасибо за помощь,но программа как то усложнена...мне надо простейший вариант...таймер должен запускаться при вводе пароля,имя вводим без ограничений во времени... и 3 попытки на ввод пароля

не могли бы вы в моей программе подсказать как и куда вставить таймер

Код:
uses crt;
const p1='12345678910';
      p2='10987654321';
      i1='Liza';
      i2='Nina';
var p,i:string;
    h,m:byte;
begin
clrscr;
writeln('vvedite imia: ');
readln(i);
if (i<>i1)and(i<>i2)then
 begin
  write('takogo net!');
  readln;
exit;
 end;
writeln('vvedite vremia: ');
readln(h,m);
if not(h in [8..17]) or not(m in [0..59])then
 begin
  writeln('ne vashe vremia');
  readln;
  exit;
 end;
writeln('vvedite parol: ');
readln(p);
if(h in [8..12])and(p<>p1)
or(h in [13..16])and(p<>p2)then
write('parol ne veren')
else
 begin
  if p=p1 then write('dobro pogalovat ',i1,'!')
  else if p=p2 then write('dobro pogalovat ',i2,'!');
 end;
readln
end.
antonov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ввод пароля к VBProject из процедуры проекта alvazor Microsoft Office Excel 6 23.08.2010 14:43
Сравнение строк, ввод пароля (assembler) You_must_help Помощь студентам 7 19.04.2009 23:53
Ввод логина и пароля. С++ Builder lamaksi C++ Builder 2 05.03.2009 15:59