Jump to content
koztax

Sistema de login primitivo

Recommended Posts

koztax

Boas

Eu chamo-me Ricardo e tenho 16 anos estou no curso de programação de sistemas informaticos e pode-se dizer que programar é a minha 'paixão' xD

Bem

Eu preciso de ajuda com um codigo que estou a desenvolver

É um sistema de login primitivo para incorporar no projecto de final de modulo.

Quando insiro a senha e carrego enter para continuar o programa nao continua 

vou mandar o codigo se possivel ajudem e indeiquem-me o erro em comentário OBRIGADO

Código

Program senha;
uses wincrt;

Var
c,v,x:integer;
s,ut,ad,ch:string;
Cha:Char;
Pass:String;
count:integer;

procedure astreisco;
var
  Ch    : Char;
  Pass  : String;
  count : integer;
begin
  Pass := '';
  count := 0;

  repeat
    Cha := ReadKey;
    if (Cha = #8) then
    begin
         write(cha);
         if (count <= 0) then begin Pass := Pass; end else
         if (count > 0) then begin Pass := Pass + Cha; end;
         dec(count);
    end else
    if (Cha in [#32..#126]) then
    begin
         Write('*');
         Pass := Pass + Cha;
         inc(count);
    end;
  until (Ch = #13);
end;

BEGIN
ad:='admin';
ch:='chaves';
v:=3;

Writeln('Introduza o nome de utilizador e depois a senha');
  readkey;
  clrscr;
writeln('                         *********************************');
Writeln('                         *          Utilizador           *');
Writeln('                         *            Senha              *');
Writeln('                         *********************************');
  repeat
readln(ut);
begin
astreisco;
readln(s);
end;
    if (s=ch) and (ut=ad) then
     begin
      Writeln('programa'); 
      x:=x+1;
     end
    else
     begin
      Writeln('utilizador ou senha incorrecta');
      c:=c+1;
      v:=v-1;
     if (c<=3) then
     Write('Tem ',v,' tentativas');
readkey;
      clrscr;
end;
  until (x=1) or (c=3);
end.

Share this post


Link to post
Share on other sites
M6

Quando acertas no login, o programa termina...


10 REM Generation 48K!
20 INPUT "URL:", A$
30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50
40 PRINT "404 Not Found"
50 PRINT "./M6 @ Portugal a Programar."

 

Share this post


Link to post
Share on other sites
koztax

Desculpa secalhar expliquei-me mal xD

Quando o login esta certo deve aparecer escrito programa isto é onde vao começar o programa.

Se estiver errado deveria aparecer utilizador ou pass incorrecta tem 'x' tentativas.

o que se passa é que quando introduzo a senha e carrego enter para a processar nao acontece nada.

ou seja fica la o underscore de escrever a piscar.

obr pelo interece xD

eu ainda sou noob xD

Share this post


Link to post
Share on other sites
M6

Então vejamos:

1. Lês a variável ut.

2. Invocas o procedimento astreisco que não faz nada.

É totalmente desprovido de semântica, limita-se a ler informação do teclado mas não faz nada com ele.

3. Lês a variável s;

Re eliminares a chamada ao procedimento astreisco, deverás ter o teu problema resolvido. E se o fizeres, elimina também o procedimento porque não está ai a fazer nada...


10 REM Generation 48K!
20 INPUT "URL:", A$
30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50
40 PRINT "404 Not Found"
50 PRINT "./M6 @ Portugal a Programar."

 

Share this post


Link to post
Share on other sites
koztax

ok obrigado e o que disse faz sentido e funciona mas eu queria que a senha aparecesse em asteriscos

como nos logins actuais.

desculpem a xatice xD

Share this post


Link to post
Share on other sites
M6

Podes fazer isso mas para tal em vez de um procedimento fazes uma função que retorna o valor introduzido pelo utilizador e trocas a leitura das variáveis de readln para o resultado da chamada a essa função.


10 REM Generation 48K!
20 INPUT "URL:", A$
30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50
40 PRINT "404 Not Found"
50 PRINT "./M6 @ Portugal a Programar."

 

Share this post


Link to post
Share on other sites
thoga31

ok obrigado e o que disse faz sentido e funciona mas eu queria que a senha aparecesse em asteriscos

como nos logins actuais.

desculpem a xatice xD

begin
astreisco;
readln(s);
end;

Não testei o código, mas deparei-me com isto. O procedimento "astreisco" (que seria mais "asterisco", em bom português) lê a pass, e não vejo problemas no código. Contudo, quando sais do procedimento com a password lida na variável "pass", fazes um ReadLn da variável "s". Depois analisas se a "s" é igual a "ch", sendo que a variável "Pass" é que tem a password.

Ou seja, o programa fica com o cursor a piscar porque está a fazer o ReadLn(s), depois de ter feito o procedimento "astreisco".

Se estiver certo e não me tiver falhado a leitura do programa, retira esse ReadLn(s) e muda o "(s=ch)" por "(Pass=ch)".

Cumpz. ;)


Knowledge is free!

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.