[Back to ENTRY SWAG index] [Back to Main SWAG index] [Original]

    {
     > Could someone give me some Pascal source on how to do
     > this:
     > I have created a shield program that password-protects
     > a specific program.
     > However, I cannot figure out how to make the password,
     > when being typed by
     > the person entering the code, to make a * or other
     > character instead of the
     > letter, so someone can't see what he's typing. Any
     > help here?

    You have to read the chars without screen echo (using crt.readkey is easiest)
    and write a char to screen for each valid input char:
    }

    USES Crt;

    CONST CR = #13; { carriage return }

    TYPE TCharSet = SET OF Char;

    FUNCTION GetPwd(hide : Char; valid : TCharSet): String;
    { 'hide' is char to print. 'valid' is }
    { a set of valid characters for password }
    { dont put #13 in 'valid' }
    VAR
      ch : Char;
      pwd : String;
    BEGIN
      pwd := '';
      REPEAT
        ch := Readkey;
        IF (ch IN valid) THEN
        BEGIN
          Write(hide);
          pwd := pwd + ch
        END
        ELSE IF (ch <> CR) THEN { bad key }
          IF (ch <> #0) THEN
            Write(^G)
      UNTIL (ch = CR);
      GetPwd := pwd
    END;

    VAR
      p : String;
    BEGIN
      Write('Enter password > ');
      p := GetPwd('*', ['a'..'z', 'A'..'Z', '0'..'9']);
      WriteLn;
      WriteLn('You entered: ', p);
      Readln
    END.

[Back to ENTRY SWAG index] [Back to Main SWAG index] [Original]