[Last Call] Learn about multicloud storage options and how to improve your company's cloud strategy. Register Now

x
?
Solved

Explanation needed for VB code

Posted on 2011-03-24
7
Medium Priority
?
365 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
VIDEO: THE CONCERTO CLOUD FOR HEALTHCARE

Modern healthcare requires a modern cloud. View this brief video to understand how the Concerto Cloud for Healthcare can help your organization.

 

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

NEW Veeam Agent for Microsoft Windows

Backup and recover physical and cloud-based servers and workstations, as well as endpoint devices that belong to remote users. Avoid downtime and data loss quickly and easily for Windows-based physical or public cloud-based workloads!

Question has a verified solution.

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

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…
If you need to start windows update installation remotely or as a scheduled task you will find this very helpful.
Video by: ITPro.TV
In this episode Don builds upon the troubleshooting techniques by demonstrating how to properly monitor a vSphere deployment to detect problems before they occur. He begins the show using tools found within the vSphere suite as ends the show demonst…
In this video you will find out how to export Office 365 mailboxes using the built in eDiscovery tool. Bear in mind that although this method might be useful in some cases, using PST files as Office 365 backup is troublesome in a long run (more on t…

656 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