[Okta Webinar] Learn how to a build a cloud-first strategyRegister Now

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 230
  • Last Modified:

c declaration in vb - (structure)

how to declare the following c structure in vb

typedef struct tagVBPARAM
{
    UINT nParam;
    ULONG nStatus;
}
VBPARAM;
0
azsoft
Asked:
azsoft
  • 3
  • 3
  • 2
  • +2
1 Solution
 
TimCotteeCommented:
Type tagVBPARAM
  nParam As Integer
  nStatus As Long
End Type
0
 
PaulHewsCommented:
Tim, I think UINT is 32 bit and ULONG is 64 bit.  I was thinking it would be:

Type tagVBPARAM
 nParam As Long
 nStatus As Double
End Type

But there are definitely problems reading the binary unsigned integer from a floating point var.
0
 
azsoftAuthor Commented:
what happen to the VBPARAM on the last line.
0
Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
JoebobCommented:
typedef struct tagVBPARAM
{
   UINT nParam;
   ULONG nStatus;
}
VBPARAM;

UINT = Unsigned Integer - 16bits on 16bit machine, 32bits on 32bit machine
ULONG = Unsigned Long - Always 32 bits

Type VBPARAM
    nParam as Long
    sStatus as Long
End Type

VB doesn't support unsigned values so the variable ranges will no go from 0 to 4294967295, they will go from -2147483648 to 2147483647.

The C++ structure you show has 2 names, tagVBPARAM and VBPARAM.
0
 
PaulHewsCommented:
>The C++ structure you show has 2 names, tagVBPARAM and VBPARAM.

More that there is a declared instance of the structure.  In VB:

Dim VBPARAM as tagVBPARAM
0
 
Richie_SimonettiIT OperationsCommented:
I am with Paul.
Cheers
0
 
JoebobCommented:
The C++ structure has 2 different names.  The VBPARAM is not a variable of type tagVBPARAM, it is the type tagVBPARAM.

If you had the exact c declaration in VB, you would be able to do the following with exactly the same results.
   DIM t1 as tabVBPARAM
   DIM t2 as VBPARAM

VB doesn't support assigning multiple type names to the same data type and I have never found a place where doing it in C is benefitial.  To have the exact same thing in VB you would do the following, but my first post should be all you need.
----------------------------------------------
Type VBPARAM
   nParam as Long
   sStatus as Long
End Type

Type tagVBPARAM
   nParam as Long
   sStatus as Long
End Type
----------------------------------------------
Notice that the type is declared twice, once for each name that the C declaration used.
0
 
PaulHewsCommented:
Ah you're right JoeBob.  I confused typedef with a simple struct definition.  Mebad.
0
 
JoebobCommented:
How is that a "B" answer?  I gave you exactly what you asked for plus a little extra info.  You can copy and paste my answer into your VB app and it will work.
0
 
azsoftAuthor Commented:
Joebob, thank you very much. I wish i could change the score to A.
0

Featured Post

[Webinar] Cloud and Mobile-First Strategy

Maybe you’ve fully adopted the cloud since the beginning. Or maybe you started with on-prem resources but are pursuing a “cloud and mobile first” strategy. Getting to that end state has its challenges. Discover how to build out a 100% cloud and mobile IT strategy in this webinar.

  • 3
  • 3
  • 2
  • +2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now