Help parsing an Edit Control

I am simulating a "fingerprint scan" by using an Edit box in my novelty program.

the characters I will use to accept and draw the print are:

/ \ : { } |

Open in new window


here is the key I am using to determine whether or not a fingerprint scan is correct:

{ = day of week is Mon thru thurs
} = say of week is Fri thru sun
/ = month is Jan Thru June
\ = month is July thru Dec
| = time is 12:01am thru 12pm
: = time is 12:01pm thru 12:00am

Can someone show me a Bare bones example on how to check my IDC_PRINT edit box to determine whether they entered a valid"print"?

Thank you.
LVL 1
edvinsonAsked:
Who is Participating?
 
sarabandeConnect With a Mentor Commented:
you could do like

std::string strValid = "/\\:{}|";
char szInput[100] = { '\0' };
GetWindowText(::GetDlgItem(IDC_PRINT), szInput, 100);
int len = (int)strlen(szInput);
for (int i = 0; i < len; ++i)
{
     if (strValid.find(szInput[i]) == std::string::npos)
     {
            ::MessageBox(NULL, szInput, "Wrong Input", MB_OK);
            return;
     }
     SYSTEMTIME st = { 0 };
     GetSystemTime(&st);
     switch (szInput[i])
     {
     case '/':
           if (st.wMonth > 6)
           {
                ::MessageBox(NULL, "/", "Wrong Month", MB_OK);
                return;
           }   
           break;
    case '\\':
          ...
}

Open in new window


Sara
0
 
sarabandeCommented:
can you elaborate what relation a "fingerprint scan" has with a edit box string that contains date/time related characters?

can you make a sample usecase with good and bad input (and explain why they were good or bad)?

Sara
0
 
edvinsonAuthor Commented:
The user has to enter the correct characters in the edit box to succeed.
So u need to use the key to determine whether their answer is correct.

I think i would loop through each char in edit box, and determine whether that character evaluates to true (based upon the rule assigned to that character)

if each character is True, then they entered a correct "print", and game continues.

Hope that helps. Oh, of course automatically the function will return false, bad, if any other characters are present.

Thank you so much
0
Introducing Cloud Class® training courses

Tech changes fast. You can learn faster. That’s why we’re bringing professional training courses to Experts Exchange. With a subscription, you can access all the Cloud Class® courses to expand your education, prep for certifications, and get top-notch instructions.

 
sarabandeCommented:
a few questions:

- the user enters any sequence of / \ : { } | and all are valid?

- it depends on the current date/time whether they were valid?

- a valid character can be repeated?

generally, you better would check each single character rather than the input in the edit box. the problem for the latter is that you don't get a reliable event for end-of-input but have to handle ambiguous events like WM_KILLFOCUS, what means that the user has moved from edit field to some other control.

when the user enters a single character you could handle EN_CHANGE or EN_UPDATE notification, or on a lower level, WM_KEYDOWN, WM_CHAR, or WM_KEYUP message.

Sara
0
 
edvinsonAuthor Commented:
I think I confused you, I am sorry.

Quite simply, I want to check the edit box value. It is either going to be correct, or incorrect.

Wrapped in a BOOL function....

 I would loop through each character.

Let's say the first character is { , then my code would check to see if Todays day is MON-THURS. If so, continue with next char. If not, it fails, return false,

Do this for each character. Each character must pass its own test.

The correct answer will contain 3 characters, and depending upon the time and date, it will contain only the characters I listed above.

For instance, using SAT JUN 08 2013 12:02am , a correct answer would be:

}/|

anything else would return false.

I suppose the order of the characters doesn't matter, as long as they are correct
0
 
edvinsonAuthor Commented:
Question not receiving answers, request deleting please. Maybe i need to re phrase it.
0
 
edvinsonAuthor Commented:
This is the perfect code solution to get me going.
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.