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

{ CB> ...I work For a bank and would like to create a Program to
 CB> maintain better Record of our Cashier Checks and also any
 CB> stop payments on them..I have done very little Programming
 CB> on pascal. Ok here goes:
 CB>         I would like to make the input of numbers to move
 CB>         from a fixed point to the left and insert commas
 CB>         every three digits For monetary figures?

You will need to set up a dedicated Character by Character input routine using
ReadKey and controlling the display yourself.  After each Character is entered
examine it and determine whether or not to add a comma.  The following very
simple (and untested) routine demonstrates this.

For a better way to do such input find and download TCSEL003.* from a PDN node
near you and study the KEYINPUT Unit.  You may be able to modify it to do
exactly what you want or perhaps use it as a guide to producing your own
"bullet proof" input routine.
}
Uses
  Crt;

Function LastPos(ch : Char; S : String): Byte;
  { Returns the last position of ch in S or zero if ch not in S }
  Var
    x   : Word;
    len : Byte Absolute S;
  begin
    x := succ(len);
    Repeat
      dec(x);
    Until (x = 0) or (S[x] = ch);
    LastPos := x;
  end;  { LastPos }


Procedure GetNumber(fieldwidth: Byte);
  Var ch : Char;
      x,y: Byte;
      i  : Word;
      st : String;
  begin
    st := '';
    Write('Enter a number: ');
    x := WhereX;
    y := WhereY;
    Repeat
      ch := ReadKey;
      Case ch of
        '0'..'9': begin
                    if LastPos(',',st) = length(st)-3 then
                      st := st + ',';
                    st := st + ch;
                  end;
        #8      : begin
                    delete(st,length(st),1);
                    if st[length(st)] = ',' then
                      delete(st,length(st),1);
                  end;
        #13     : Exit;
      end;
      gotoXY(x,y);
      Write(st:fieldwidth);
    Until False;
  end;

begin
  Writeln;
  Writeln;
  getnumber(14);
end.

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