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

    {
    > - How can I get TP to make what ever the user enters in to CAPS or     ³
    >   NONCAPS?  Example:                                                   ³
    >                     Enter Name -> ChRiS BrAtEnE                        ³
    >                     Your name is Chris Bratene? (Y/n)?                 ³

    I just wrote a routine that does this on the fly, so to speak, For
    another user, and I haven't erased it yet, so here it is (slightly
    modified, so that it Forces lowerCase, too):
    }

    Uses
      Crt;

    Procedure Backspace;
    begin
      Write(#8' '#8)
    end;

    Function LoCase(ch : Char) : Char;
    begin
      if ch in ['A'..'Z'] then
        LoCase := Char(ord(ch)+32)
      else
        LoCase := ch;
    end;

    Procedure Dibble(Var st : String);
    { Forces upperCase For first letter in each Word,
      lowerCase For other letters. }
    Var
      len : Byte Absolute st;
      ch : Char;

      Function ForceCap : Boolean;
      begin
        ForceCap := (len = 0) or (st[len] = ' ');
      end;

    begin
      st := '';
      Repeat
        ch := ReadKey;
        if ForceCap then
          ch := upCase(ch)
        else
          ch := LoCase(ch);
        Case ch of
          #8  : if len > 0 then
                begin
                  Backspace;
                  dec(len);
                end;
          #27 : While len > 0 do
                begin
                  BackSpace;
                  dec(len);
                end;
          #0  : ch := ReadKey;

          else
            begin
              Write(ch);
              st := st + ch;
            end;

        end;
      Until ch in [#13,#27];

      Writeln;

    end;

    Var
      st : String;

    begin { test }
      Writeln;
      Write('Enter String:  ');
      Dibble(st);
      Writeln(st);
    end.

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