Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
HomeAnnouncementsFree MagazinesWhite PapersSubmit Content
Discussion GroupsASP.NETWindows FormsLanguages.NET FrameworkVisual Studio.NET
Articles.NET FrameworkASP.NETToolsWindows Forms
.NET DirectoryOpen Source ProjectsUser GroupsWeb Resources
Related Topics
Visual Basic 6SQL ServerMS AccessOther DB ProductsMS Server ProductsMore Topics ...

.NET Forum / Languages / VB.NET / October 2007

Tip: Looking for answers? Try searching our database.

VB 2005 Type conversion

Thread view: 
Enable EMail Alerts  Start New Thread
Thread rating: 
JimmyX - 13 Oct 2007 00:57 GMT
Does anyone know why I get an error message when I use the following code (it
works with VB6):

Dim J as integer
If J And (2^0) then goto ........

I get an message that implicit conversions from Double to Long are not
allowed. What is the proper
VB2005 way to implement this statement. I don't want to have to keep Option
Strict Off in order for
my program to work!

JimmyX
Scott M. - 13 Oct 2007 04:36 GMT
Hi Jimmy,

Before I get to your conversion code, I must just say that you've got to
approach VB .NET 2005 with the understanding that it is not just a new
version of VB 6.  It is a completely different beast, it runs on an entirely
new runtime and although some of its' syntax is similar to VB 6, there
really isn't much it has in common with VB 6.  That's why you'll find lots
of things that worked in VB 6 that don't in VB .NET.

Also, you should turn Option Strict on and leave it on forever in VB .NET.
This setting makes VB .NET a type-safe language like C# and although it will
mean that you will have to write more code at times, it will ensure that the
code you have is much more bullet proof come runtime.

Now, addressing your If...Then logic:

First, you should lose the "goto" as this was never considered good
programming practice (unless you go back to QBASIC).  Place the code you
want to run if your condition is true in the true section of the If
construct or create a separate sub/function and simply call it from the true
portion of the If construct.

Next, your conversion problem stems from the compound statement.  Your If
statement, it translates to:

If j and 2 then

Which doesn't make much sense and the compiler sees two different data types
trying to be compared.  Since one side of your compound statement will
return a Double and the other side will return a Long and the compiler won't
do impicit conversions for you, you must make sure both sides of the
compound statement have the same type.  This wouldn't be necessary if both
sides were expressions (if j <> 0 And 2^0 = 2 then your code would work just
fine)

If you can explain what it is you are realy trying to test, I can help you
write the If logic more clearly.

-Scott

> Does anyone know why I get an error message when I use the following code
> (it
[quoted text clipped - 11 lines]
>
> JimmyX
Stephany Young - 13 Oct 2007 07:47 GMT
Close but no cigar.

The result of exponention {^} is always a Double.

Prior to a bitwise And operation, one of the operands MAY be converted to
another type.
If one of the operands is an Integer and the other is Decimal, Single,
Double or String then that one is converted to a Long and the result of the
bitwise And operation will also be a Long

The documentation provides a definitive table for this rule for any
combination of operand types.

The big clue is that an 'implicit conversion' is not allowed so therfore one
needs to do an explicit conversion.

 Dim J as integer

 If J And Convert.ToInt64(2^0) Then ... etc.

> Hi Jimmy,
>
[quoted text clipped - 51 lines]
>>
>> JimmyX
Scott M. - 13 Oct 2007 14:39 GMT
I'm pretty sure that's what I said:

"your conversion problem stems from the compound statement"

"Since one side of your compound statement
will return a Double and the other side will return a Long and the
compiler won't do impicit conversions for you, you must make sure both
sides of the compound statement have the same type."

-Scott

> Close but no cigar.
>
[quoted text clipped - 72 lines]
>>>
>>> JimmyX
Jan Hyde (VB MVP) - 15 Oct 2007 11:30 GMT
"Scott M." <s-mar@nospam.nospam>'s wild thoughts were
released on Fri, 12 Oct 2007 23:36:34 -0400 bearing the
following fruit:

<SNIP>

>Next, your conversion problem stems from the compound statement.  Your If
>statement, it translates to:
>
>If j and 2 then

If j and 1 Then

--
Jan Hyde

https://mvp.support.microsoft.com/profile/Jan.Hyde
Scott M. - 15 Oct 2007 13:16 GMT
Doh!

> "Scott M." <s-mar@nospam.nospam>'s wild thoughts were
> released on Fri, 12 Oct 2007 23:36:34 -0400 bearing the
[quoted text clipped - 13 lines]
>
> https://mvp.support.microsoft.com/profile/Jan.Hyde

Free Magazines

Get these publications absolutely FREE for up to 12 months. There are no hidden fees and no obligation. Simply choose a title, complete the application form and submit it. Read more ...

Oracle MagazineNetwork ComputingComputer WorldBio-IT WorldeWeekInformation WeekInfosecurity
 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2008 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.