?
Solved

Explanation needed for VB code

Posted on 2011-03-24
7
Medium Priority
?
364 Views
Last Modified: 2013-11-27
Hello,

I need some clarification for the following lines of code which check the entered User name and entered password and if valid allow the user to login. The lines of code are numbered so that I can refer to the parts that I don't understand:

1)    Dim users() As String = {"Adam", "Eve", "Angel"}
2)     Dim passwords() As String = {"pass1", "pass2", "pass3"}
3)      For i As Integer = 0 To users.Length - 1
4)     Dim validUsername As Boolean = (String.Compare(UserName.Text, users(i), True) = 0)
5)    Dim validPassword As Boolean = (String.Compare(Password.Text, passwords(i), False) = 0)
6)     If validUsername AndAlso validPassword Then
7)                ' TODO: Log in the user...


The above code works great. But what I don't understand are lines 4 and 5. I do understand what both lines are doing: they are comparing the text in the UserName with that of User(i) and if the outcome of the comparison is true then the user name is verified. The same logic is used in line 5 for the password.

But two things confuse me. The first is the way each line is constructed and second the fact that in line 4 "True" is used while in line 5 "False" is used. Shouldn't both of them be "True"?
Actually when I altered line 5 (from False to True) I got the same result! Why?
I need the clearest explanation and not the quickest. Thank you.
0
Comment
Question by:adamtrask
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 4
  • 3
7 Comments
 
LVL 52

Expert Comment

by:Carl Tawn
ID: 35206123
The True/False switch that gets passed to the String.Compare method controls case-sensitivity for the comparison. So, in essence it is doing a case-insensitive comparison of username, but case-sensitive for passwords.

String.Compare will return 0 if the two strings match. You cannot assign 0 directly to a boolean, so those lines wrap the String.Compare(...) = 0 in brackets to create an expression that will return a boolean value.
0
 

Author Comment

by:adamtrask
ID: 35206226
Carl,

Are you saying that if I wrote Line 4 like this:

4)     Dim validUsername As Boolean = (String.Compare(UserName.Text, users(i),False) = 0)

It would make a case-sensitive comparison?

And if I used True instead of False in line 5 it would make a case-insensitive comparison?
0
 
LVL 52

Expert Comment

by:Carl Tawn
ID: 35206243
True means ignore case, i.e. case-insensitive. False means make a case-sensitive comparison.

Reference:

     http://msdn.microsoft.com/en-us/library/zkcaxw5y.aspx
0
Certified OpenStack Administrator Course

We just refreshed our COA course based on the Newton exam.  With 14 labs, this course goes over the different OpenStack services that are part of the certification: Dashboard, Identity Service, Image Service, Networking, Compute, Object Storage, Block Storage, and Orchestration.

 

Author Comment

by:adamtrask
ID: 35206267
One last clarification:

In lines 4 and 5, can I skip True and False altogether? and write them in the following way:

4)     Dim validUsername As Boolean = (String.Compare(UserName.Text, users(i)) = 0)
5)    Dim validPassword As Boolean = (String.Compare(Password.Text, passwords(i)) = 0)
0
 
LVL 52

Accepted Solution

by:
Carl Tawn earned 2000 total points
ID: 35206332
You can, but that will always use a case-sensitive comparison.

I think your code is being explicit because usual practice for login credentials is for usernames to be case-insensitive, while passwords are usually case-sensitive.
0
 

Author Comment

by:adamtrask
ID: 35206426
Thanks you so much.
This cleared a mystery for me.
0
 

Author Closing Comment

by:adamtrask
ID: 35206430
Great response
0

Featured Post

Want to be a Web Developer? Get Certified Today!

Enroll in the Certified Web Development Professional course package to learn HTML, Javascript, and PHP. Build a solid foundation to work toward your dream job!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

This article describes relatively difficult and non-obvious issues that are likely to arise when creating COM class in Visual Studio and deploying it by professional MSI-authoring tools. It is assumed that the reader is already familiar with the cla…
Parsing a CSV file is a task that we are confronted with regularly, and although there are a vast number of means to do this, as a newbie, the field can be confusing and the tools can seem complex. A simple solution to parsing a customized CSV fi…
Michael from AdRem Software outlines event notifications and Automatic Corrective Actions in network monitoring. Automatic Corrective Actions are scripts, which can automatically run upon discovery of a certain undesirable condition in your network.…
How to fix incompatible JVM issue while installing Eclipse While installing Eclipse in windows, got one error like above and unable to proceed with the installation. This video describes how to successfully install Eclipse. How to solve incompa…

752 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question