--- Energized Mark <[EMAIL PROTECTED]> wrote:

> 
> 
> --- In [email protected], "remarknibor"
> <[EMAIL PROTECTED]> wrote:
> >
> > Hi.
> >
> > I was wondering how to have a timer running while
> accepting a user's
> > input. Specifically, I am having someone write an
> essay and I'm saving
> > it to a variable when it's done using
> 'getline(cin,essay)'. However,
> > while the person is typing their essay, nothing
> else in the programme
> > is happening, and I'd actually like to be able to
> time their writing
> > and stop them when 10 minutes has passed.
> >
> > Any ideas as to how I could achieve this?
> >
> > Thanks in advance for the help,
> >
> > Robin.
> 
> Try this for a starter Robin:
> 
> // TimedEntry.cpp :
> // Demo solution of timed entry with filters
> 
> #include <stdafx.h>
> #include <stdio.h>
> #include <conio.h>
> #include <sys/timeb.h>
> #include <time.h>
> 
> #define MAXINPUTLEN 256
> 
> int TimedEntry( char *strBuffer, int iMaxLen, int
> iTimer);
> int IsKeypressValid(int ch);
> 
> char strInput[256];
> int _tmain(int argc, _TCHAR* argv[])
> {
>    int iError;
>    printf("What is 2+2? : ");
>    iError = TimedEntry( strInput, MAXINPUTLEN, 15);
> 
>    switch(iError)
>    {
>      case 0:
>        printf("\n\nYour Answer is:%s\n", strInput);
>        break;
> 
>      case -1:
>        printf("\n\nAllacated time for question
> expired\n");
>        break;
> 
>      default:
>        printf("\n\nUnknown error\n");
>        break;
>    }
>    printf("\nTest is over\b\nHit AnyKey (if you can
> find it)");
>    getch();
>    return 0;
> }
> 
> int TimedEntry( char *strBuffer, int iMaxLen, int
> iTimer)
> {
>    int iPos=0, ch;
>    __int64 tTimer;
>    struct __timeb64 timebuffer;
>    _ftime64( &timebuffer );
> 
>    tTimer = timebuffer.time + iTimer;
>    do
>    {
>      while( ! _kbhit() )
>      {
>         _ftime64( &timebuffer );
>        if( tTimer < timebuffer.time)
>          return(-1);
>      }
>      ch = getch();
>      if( iPos < iMaxLen )
>      {
>        switch(ch)
>        {
>          case 8:
>            if(iPos > 0)
>            {
>              printf("%c %c", ch, ch);
>              iPos--;
>            }
>            break;
> 
>          case '\r':
>          case '\n':
>            strBuffer[iPos++] = (char)'\0';
>            break;
> 
>          //
>          // Put extra case: code in here to
>          // filter out any unwanted charactors
>          //
> 
>          default:
>            if(IsKeypressValid(ch))
>            {
>              strBuffer[iPos++] = (char)ch;
>              printf("%c", (char)ch);
>            }
>            break;
>        }
>      }
>    } while(1);
>    return(0);
> }
> 
> int IsKeypressValid(int ch)
> {
>    int i;
>    char strKeysAllowed[] =
>
"1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
> 
>    for(i=0; i<strlen(strKeysAllowed); i++)
>    {
>      if( (char)ch == strKeysAllowed[i])
>      return 1;
>    }
>    return 0;
> }
> 
What Operating System are you using?

Mickey M.
Construction Partner Inc.
http://www.constructionpartner.com

__________________________________________________
Do You Yahoo!?
Tired of spam?  Yahoo! Mail has the best spam protection around 
http://mail.yahoo.com 

Reply via email to