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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.11.2011, 18:06   #1
КакГагарин
 
Регистрация: 10.11.2011
Сообщений: 3
По умолчанию пароль в PascalABC

Дорогой пипл можете помочь с маленькой проблемой в пароле:
Код:
///uses crt, GraphABC;
var i,k,n,g:integer;
    c:char;
    f:text;
    a,s:string;


procedure parolka;
var i: integer;
    f:text;
    c,y:char;
    s,a:string;

begin
{clearwindow;
n:=loadpicture('D:\Новая папка\Курсач\PABC\pas.jpg');}
assign(f,'pass.txt');
reset(f);
readln(f,a);
if c=#13 then exit;
repeat

clearwindow;
drawpicture(n,450,60);
rectangle (300,200,400,250);
gotoxy( 29,9);
setfontsize(11);
setfontstyle(fsItalic);
writeln('Введите пароль'); gotoxy(32,12);
s:=''; c:='a'; k:=0;
while c<>#13 do

begin
c:=readkey;
if c<>#13 then

begin
s:=s+c;
k:=k+1;
gotoxy(31+k,12);
write('*');
end;
end;
if a<>s then
if c=#8 then delete(s,1,1);


until a=s;

hidecursor;
clearwindow;
gotoxy(20,12);
writeln('Пароль введен верно!!!');
{n:=loadpicture('D:\Новая папка\Курсач\PABC\passw.jpg');
drawpicture(n,450,60); }
rewrite(f);
write(f,a);
close(f);
for i:=1 to 500000 do
begin
delay(200);
if i mod 2=0 then setfontcolor(clblack) else setfontcolor(clwhite);
textout(160,420,'Для продолжения нажмите "ПРОБЕЛ"');
end;
end;
begin

hidecursor;

n:=loadpicture('D:\Новая папка\Курсач\PABC\komp.jpg');
drawpicture(n,450,60);

setbrushstyle(bsclear);
setwindowcaption('Титульный лист проекта');
setfontcolor(claqua);
setfontstyle(fsItalic );
setfontsize(15);


textout(70,25,'Костанайский Колледж Автомобильного Транспорта');
textout(250,70,' Проект');
textout(220,120,'Учащегося гр.');
textout(20,350,'Руководитель  пректа:');
textout(20,380,'фамилия преподователя');
textout(230,170,'Фамилия учащегося');

 i:=1; c:='a';
repeat  //   c:=readkey;
i:=i+1;
delay(200);
if i mod 2=0 then setfontcolor(clblack) else setfontcolor(clwhite);
textout(160,420,'Для продолжения нажмите "ПРОБЕЛ"');

until keypressed;

 parolka;


end.   ///
Вот это есть код. Проблемма в том что после нажатия первого пробела программа переходит к окну пароля и пробел щитает за уже введенный символ.Вопрос таков каким образом можно сделать чтоб программа мне не записывала пробел или как Подключить BackSpace. Дело в том что если пишешь условие что если нажат BackSpace, то delete(s,1,1), но при этом он не удаляет символ, а наоборот еще дописывает.
Уже обшарил весь гугл и очень много форумов и ни где нет о PascalABC.


________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!
Модератор.

Последний раз редактировалось Serge_Bliznykov; 10.11.2011 в 23:40.
КакГагарин вне форума Ответить с цитированием
Старый 10.11.2011, 23:48   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

тоже мне, бином Ньютона..

вы же выходите из цикла не по нажатию пробела а ПО НАЖАТИЮ ЛЮБОЙ клавиши. (keypressed)
а кто её прочитает из буфера клавиатуры?!
Правильно - чтение в процедуре parolka.
достаточно прочитать код в переменную, как всё наладится.
примерно так:

Код:
repeat  
  i:=i+1;
  delay(200);
  if i mod 2=0 then setfontcolor(clblack) 
                     else setfontcolor(clwhite);
  textout(160,420,'Для продолжения нажмите "ПРОБЕЛ"');
until keypressed;

c:=readkey;

parolka;

код вообще не смотрел. мне кажется там у Вас слишком всё замудрённо/запутанно написано..
мне хватило то, что Вы проверяете переменную c до того, как ей что-то присвоено:
Код:
  if c=#13 then exit;
Это однозначно нонсенс, баг и ошибка!
Дальше я уже смотреть не стал, уж извините великодушно...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 11.11.2011, 09:50   #3
КакГагарин
 
Регистрация: 10.11.2011
Сообщений: 3
По умолчанию

Не возможно вы меня не поняли, дело в том что у меня программа сделанна так, что если пароль был не верен то окно ввода отчищалось если в программу как вы показали вставить:
Код:
 c:=readkey;
то если пороль был не верен программа просто завершалась.
КакГагарин вне форума Ответить с цитированием
Старый 11.11.2011, 09:52   #4
КакГагарин
 
Регистрация: 10.11.2011
Сообщений: 3
По умолчанию

Но спасибо, что откликнулись.
КакГагарин вне форума Ответить с цитированием
Старый 11.11.2011, 16:57   #5
unbanned
Форумчанин
 
Аватар для unbanned
 
Регистрация: 23.11.2010
Сообщений: 530
По умолчанию

Код:
while c <> #13 do

    begin
      c := readkey;
      if c <> #13 then

      begin
      if (c <> #32) and (c<>#8) then  s := s + c;
        k := k + 1;
        gotoxy(31 + k, 12);
        write('*');
      end;
    end;
  if a <> s then
    if c=#8 then delete(s,length(s),1);
попробуй вот так...

а вообще проверку пароля я бы как-то так сделал
Код:
uses
  crt;

var
  a: string;

procedure chek(pas: string);
var
  c: char;
  s: string;
  charsLt: set of char;
  charsK: set of char;
  numbers: set of char;
begin
  charsLt := ['А'..'я'];
  numbers := ['0'..'9'];
  charsK := ['A'..'z'];
  s := '';
  writeln('Введите пароль:');
  while c <> #13 do 
  begin
    write(s);
    c := readkey;
    if (c in charsLt) or (c in charsk) or (c in numbers) then s := s + c;
    if c = #8 then delete(s, length(s), 1);
    if c = #46 then delete(s, 1, 1);
    clrscr;
    writeln('Введите пароль:');    
  end;
  writeln(s);
  if s = pas then writeln('пароль верный')
  else writeln('не верный'); 
end;

begin
  a := 'password';
  chek(a);
end.

Последний раз редактировалось unbanned; 11.11.2011 в 18:56.
unbanned вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
PascalABC ludan Помощь студентам 0 22.10.2011 22:50
Access запрашивает пароль на все файлы даже если пароль не устанавливался d_adilet Microsoft Office Access 1 11.06.2010 19:44
3D в PascalABC Рудко Дмитрий Паскаль, Turbo Pascal, PascalABC.NET 6 09.02.2010 13:02
Графы и PascalABC ArcaN0id Помощь студентам 7 07.12.2009 19:46
PascalABC, uses Gorny Помощь студентам 3 04.12.2009 13:12