Validation program - Programmers Heaven

#### Howdy, Stranger!

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

# Validation program

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?

• : 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}

{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.
• 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]