Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Sign In with Facebook Sign In with Google Sign In with OpenID

Categories

We have migrated to a new platform! Please note that you will need to reset your password to log in (your credentials are still in-tact though). Please contact lee@programmersheaven.com if you have questions.
Welcome to the new platform of Programmer's Heaven! We apologize for the inconvenience caused, if you visited us from a broken link of the previous version. The main reason to move to a new platform is to provide more effective and collaborative experience to you all. Please feel free to experience the new platform and use its exciting features. Contact us for any issue that you need to get clarified. We are more than happy to help you.

Validation program

stevensinghstevensingh Posts: 13Member
I am am writing a program that validates certain user inputs in a wages program. One of the inputs is a taxcode - this comprises of 3 digits and 1 letter ('L' or 'H').

How can I validate the user input taxcodes so that only taxcodes that consist of 3 digits and 1 letter (l or H) are accepted?


Comments

  • : I am am writing a program that validates certain user inputs in a wages program. One of the inputs is a taxcode - this comprises of 3 digits and 1 letter ('L' or 'H').
    :
    : How can I validate the user input taxcodes so that only taxcodes that consist of 3 digits and 1 letter (l or H) are accepted?
    :
    :
    :

    You might want to modify this to fit your needs:

    [code]
    function inputTaxCode : String;
    var s : String;
    ch : Char;
    begin
    s := '';
    while (true) do begin

    {wait until keypressed}
    repeat until (keypressed);
    {get the key}
    ch := readKey;

    {only process ASCII keys}
    if NOT(ch = 0) then begin
    ch := UPCASE(ch);

    {return}
    if (ch = #13) AND (length(s) = 4) then begin
    inputTaxCode := s;
    exit;

    {backspace}
    end else if (ch = #8) AND NOT(length(s) = 0) then begin
    s := copy(s, 1,length(s)-1);
    write(#8);

    {digits and L and H}
    end else if ((ch >= '0') AND (ch <= '9') AND (length(s) < 3)) OR
    (((ch = 'L') OR (ch = 'H')) AND (length(s) = 3)) then begin
    s := s + ch;
    write(ch);
    end;

    end else ch := readKey; {ignore the extended keycodes}
    end;
    end;
    [/code]

    There are sure some syntax errors in the code above - I didn't check it with pascal.

    tron.
  • weedsmokaweedsmoka Posts: 34Member
    : I am am writing a program that validates certain user inputs in a wages program. One of the inputs is a taxcode - this comprises of 3 digits and 1 letter ('L' or 'H').
    :
    : How can I validate the user input taxcodes so that only taxcodes that consist of 3 digits and 1 letter (l or H) are accepted?
    :
    :
    :


    my version:
    [code]
    {Returns TRUE if ch is a number}
    function IsDigit(ch:char):boolean;
    begin
    IsDigit := (ch in ['0'..'9']);
    end;

    {Returns TRUE if ch is either 'H' or 'L'}
    function IsHL (ch:char):boolean;
    begin
    IsHL := ((UpCase(ch) = 'H') or (UpCase(ch) = 'L'));
    end;


    {Returns TRUE if tax code is valid}
    function TaxCodeValid(s:string):boolean;
    var
    result:boolean;
    i:byte;
    begin
    result:=true;

    {Remove any spaces from the beginning of the string}
    while (s[1] = #32) and (byte(s[0]) > 0) do delete(s,1,1);

    {Remove any spaces from the end of the string}
    while (s[byte(s[0])] = #32) and (byte(s[0]) > 0) do dec(byte(s[0]));

    if byte(s[0]) <> 4 then result:=false
    else
    begin
    for i:=1 to 3 do
    if (not IsDigit(s[i])) then result:=false;
    if (not IsHL (s[4])) then result:=false;
    end;
    TaxCodeValid:=result;

    end;

    begin
    writeln(TaxCodeValid('123H'));
    writeln(TaxCodeValid('1234'));
    end.
    [/code]
Sign In or Register to comment.