重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
因为您计算的数值太大,超过了整数的最上限。
专注于为中小企业提供成都网站建设、网站建设服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业东河免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了近1000家企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。
而如果您用LONG数据类型或ULONG数据类型,也不会计算超过8次的结果。
溢出就是说你设置的变量不合适,数据大于你设置的变量范围了.
比如你设置的是int,,,,而数据超过了256,就会
溢出
n=n+1
之后你重新redim policetask(1,n-1) 此时的n-1就是0,相当于你的第二维中本身就没有任何元素(vb.net中的数组定义是不含上标的,跟vb不一样),之后你再对plicetask(0,n-1)操作就会报错。
另外,大致看了一下,程序大概是找重复次数的,不过vb.net中不是有Dictionary这种东西么,为什么还要用数组去自己查找。
题主这个 Function FindWindow(一堆参数) As Long,返回值是个 Long ,而下面 wd = FindWindow(),wd 却是个 Integer 类型的,当然会溢出。
楼上说都改成 Long 确实可以,不过题主的 API 声明是从 VB 里拷贝过来的吧?VB 里的 Long 到 .NET 中就是 Int32 了,所以应该把上面 FindWindow 的返回类型由 Long 改为 Int32(或者 Integer)才是正解。
第一问题好理解, 可能 key 是integer类型缘故吧,把它改为Byte。
第二个没读懂,你换个方式试试,如:
'Dim bts() As Byte = My.Computer.FileSystem.ReadAllBytes("")
Dim bst As System.IO.BinaryReader = New System.IO.BinaryReader(System.IO.File.OpenRead("D:\Program Files(Green)\人机对战五子棋-绿色免安装单机版v1.0.exe"))
Dim bs() As Byte
Const aLength As Integer = 50000
Do
bs = bst.ReadBytes(aLength)
Console.WriteLine(bs.Length)
Loop Until bs.Length aLength
bst.Close()
文件读到最后一块总会小于指定长度的,你的代码先定义数组长度,然后再读取,这样最后读取的一块二进制数组必然有一部分无效的。
题主这个FunctionFindWindow(一堆参数)AsLong,返回值是个Long,而下面wd=FindWindow(),wd却是个Integer类型的,当然会溢出。楼上说都改成Long确实可以,不过题主的API声明是从VB里拷贝过来的吧?VB里的Long到.NET中就是Int32了,所以应该把上面FindWindow的返回类型由Long改为Int32(或者Integer)才是正解。