成都网站建设设计

将想法与焦点和您一起共享

vb点虐 不声明 vbnet single

VB中的变量必须先声明才可使用吗

VB6.0中变厅敏此量可以不事先声明,条件是编写代码窗口最上方处没有Option Explicit语句。

创新互联主要从事网站建设、成都网站设计、网页设计、企业做网站、公司建网站等业务。立足成都服务玛多,10年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:13518219792

但强烈建议使用Option Explicit 语句来强制显式声明模块中的所有变量。

Option Explicit 语句

在模块级别中使用,强制显式声明模块中的所有变量。

语法:

Option Explicit

说明:

如果使用,Option Explicit 语句必须写在模块的所有过程之前。

如果模块中使用了 Option Explicit,则必须使用

Dim、扮迅Private、Public、ReDim 或 Static 语句来显式声明所有的变量。如果使用了未声明的变量名在编译时间会出现错误。

如果没有使用 Option Explicit 语句,除非使用 Deftype 语句指定拿散了缺省类型,否则所有未声明的变量都是 Variant 类型的。

使用 Option Explicit 可以避免在键入已有变量时出错,在变量的范围不是很清楚的代码中使用该语句可以避免混乱。

vb6.0程序移植到VB.NET后提示“未声明变量“Vaptr””

讲了一堆,看的头晕,勉强看懂了,能不能好好表达自己的问题啊。废话一堆,其实有个标题就好了。vb点虐 不再使用VarPtr来返回变斗扒量的地址了,其实是net不提倡使用指针和地址。

net有了一个空差昌新的叫做托管的概念,建议了解一下,net里面的变量地址都是不确定的,生存周期也不确定,是由托管机制来管理内存,程序员不必再庆腔纠结于内存的管理而浪费精力。

解决方法:可以使用byref声明为整型变量直接将变量地址传过去就好,不用声明为什么指针的。

或者可以试试下面这个:

GCHandle 类的 AddressOfPinnedHandle 方法可以提供类似的功能.

请问为什么我公司的vb点虐 源码到了我的电脑上运行就会显示好多未声明啊?

用API 函数GetVolumeInformation得到的不是硬盘的序列号!!!

BOOL GetVolumeInformation(

LPCTSTR lpRootPathName,

LPTSTR lpVolumeNameBuffer,

DWORD nVolumeNameSize,

LPDWORD lpVolumeSerialNumber,

LPDWORD lpMaximumComponentLength,

LPDWORD lpFileSystemFlags,

LPTSTR lpFileSystemNameBuffer,

DWORD nFileSystemNameSize

);

看看英文啊:VolumeSerialNumber!得到的只是卷区序列号!

硬盘的序列号应该是

Drive Model Number________________: WDC WD400EB-00CPF0

Drive Serial Number_______________: WD-WCAATF083586

Drive Controller Revision Number__: 06.04G06

Controller Buffer Size on Drive___: 2097152 bytes

Drive Type________________________: Fixed

Drive Size________________________: 40020664320 bytes

中:

Drive Serial Number_______________: WD-WCAATF083586 这才是硬盘Serial Number!!!!

这个号是不会因为派弯你格式化硬盘而改动,也不是网上流传的修改工具能改的,(其实网上流传的修改工具的也不过是卷区号而已!)

建议用 DiskID.dll或DiskID32.dll来获取

用diskid.dll和disk32.dll获得硬盘序列号

1.调贺羡数用diskid.dll实现:

Option Explicit

Private Declare Function IsWinNT Lib "DiskID.DLL" () As Long

Private Declare Function ReadPhysicalDrive9X Lib "禅首DiskID.DLL" (driveID As Long, buffer As Long, bufLen As Long) As Long

Private Declare Function ReadPhysicalDriveInNT Lib "DiskID.DLL" (driveID As Long, buffer As Long, bufLen As Long) As Long

Private Type DRIVER_INFO_OK

ModalNumber(39) As Byte

SerialNumber(19) As Byte

ControlNum(7) As Byte

DriveType As Long

Cylinders As Long

Heads As Long

Sectors As Long

End Type

Private Sub Command1_Click()

Dim x As DRIVER_INFO_OK

Dim i As Long

If IsWinNT = 1 Then

i = ReadPhysicalDriveInNT(ByVal 0, ByVal VarPtr(x), ByVal 256)

Else

i = ReadPhysicalDrive9X(ByVal 0, ByVal VarPtr(x), ByVal 256)

End If

Dim s As String

s = StrConv(x.ModalNumber, vbUnicode)

s = Left(s, InStr(1, s, Chr(0)) - 1)

MsgBox "硬件厂商代码为:" + s

s = StrConv(x.SerialNumber, vbUnicode)

s = Left(s, InStr(1, s, Chr(0)) - 1)

MsgBox "硬盘序列号为:" + s

End Sub

2.调用diskid32.dll实现:

Option Explicit

Private Declare Function DiskID32 Lib "DiskID32.DLL" (ByRef DiskModel As Byte, ByRef DiskID As Byte) As Long

Private Sub Command1_Click()

Dim DiskModel(31) As Byte, DiskID(31) As Byte, i As Integer, Model As String, ID As String

If DiskID32(DiskModel(0), DiskID(0)) 1 Then

MsgBox "get diskid32 err"

Exit Sub

End If

For i = 0 To 31

If Chr(DiskModel(i)) Chr(0) Then

Model = Model Chr(DiskModel(i))

End If

If Chr(DiskID(i)) Chr(0) Then

ID = ID Chr(DiskID(i))

End If

Next

MsgBox "硬件产生代码为:" + Model

MsgBox "硬盘序列号为:" + ID

End Sub

说明:diskid.dll可从下载

diskid32.dll可从下载

vb点虐 中变量可以不用声明吗?

不可以,变量都要声明的。没有做声明的变量系统就不认识。也就无法进行操作、使用。


网页标题:vb点虐 不声明 vbnet single
转载注明:http://chengdu.cdxwcx.cn/article/ddpjpdd.html