Vb6.0 Variant 在 Vb.net 中 Object 的问题

问题描述

Vb6.0代码如下:ConstDATASIZE=459DimglngEnrollDataAsVariantDimvniiAsLongDimvByte()AsByteastrBuff=Rs.Fields("TEMP")'2进制字段vByte=astrBuffForvnii=0ToDATASIZE-1glngEnrollData(vnii)=vByte(vnii*5+1)glngEnrollData(vnii)=glngEnrollData(vnii)*256+vByte(vnii*5+2)glngEnrollData(vnii)=glngEnrollData(vnii)*256+vByte(vnii*5+3)glngEnrollData(vnii)=glngEnrollData(vnii)*256+vByte(vnii*5+4)IfvByte(vnii*5)=0ThenglngEnrollData(vnii)=0-glngEnrollData(vnii)EndIfNextvb6.0中运行没有问题但在Vb.net中代码ConstDATASIZE=459DimglngEnrollDataAsobjectDimvniiAsLongDimvByte()AsByte'astrBuff=Rs.Fields("TEMP").value'2进制字段DimastrBuffAsString=Rs.Fields("TEMPLATE").Value.ToStringDimvByte()AsByte=System.Text.Encoding.Default.GetBytes(astrBuff)Forvnii=0ToDATASIZE-1glngEnrollData(vnii)=vByte(vnii*5+1)'执行在这里出现未处理System.NullReferenceExceptionMessage="未设置对象变量或With块变量。"错误glngEnrollData(vnii)=glngEnrollData(vnii)*256+vByte(vnii*5+2)glngEnrollData(vnii)=glngEnrollData(vnii)*256+vByte(vnii*5+3)glngEnrollData(vnii)=glngEnrollData(vnii)*256+vByte(vnii*5+4)IfvByte(vnii*5)=0ThenglngEnrollData(vnii)=0-glngEnrollData(vnii)EndIfNext请教,在vb.net中,我该怎么修改,不胜感激!!!!!!

解决方案

解决方案二:
DimglngEnrollDataAsobject改成:DimglngEnrollData(DATASIZE-1)AsLong
解决方案三:
谢谢你的回答但我将DimglngEnrollDataAsobject改成:DimglngEnrollData(DATASIZE-1)AsLong或者DimglngEnrollData(DATASIZE-1)Asbyte都不行执行到glngEnrollData(vnii)=vByte(vnii*5+1)这里就直接死掉了
解决方案四:
引用2楼hgl99的回复:

谢谢你的回答但我将DimglngEnrollDataAsobject改成:DimglngEnrollData(DATASIZE-1)AsLong或者DimglngEnrollData(DATASIZE-1)Asbyte都不行执行到glngEnrollData(vnii)=vByte(vnii*5+1)这里就直接死掉了

DimglngEnrollData(DATASIZE-1)AsLong还出错,估计是vByte数组上限溢出了吧。你跟踪下或在循环前加入以下的判断就知道了:IfvByte.Length<(DATASIZE-1)*5+4ThenMsgBox("vByte中数据太少,无法进行计算。")EndIf

时间: 2024-09-20 16:51:27

Vb6.0 Variant 在 Vb.net 中 Object 的问题的相关文章

Vb6.0 Variant 在 Vb.net 中 Object 赋值问题

问题描述 Vb6.0代码如下:ConstDATASIZE=459DimglngEnrollDataAsVariantDimvniiAsLongDimvByte()AsByteastrBuff=Rs.Fields("TEMP")'2进制字段vByte=astrBuffForvnii=0ToDATASIZE-1glngEnrollData(vnii)=vByte(vnii*5+1)glngEnrollData(vnii)=glngEnrollData(vnii)*256+vByte(vni

VB6.0代码转VB.NET

问题描述 大家好,能否帮我把下面代码转成VB.NET的?谢谢!其实中UnzipPhoto是我引用的外部DLL文件dimstrSQLasstringDimtestAsUnzipPhoto.clsUnzipPhotoDimcnDataBaseAsADODB.ConnectionDimrsExpPortPhotoAsADODB.RecordsetSetrsExpPortPhoto=NewADODB.RecordsetSettest=NewUnzipPhoto.clsUnzipPhotostrSQL="

vb6.0中的as any 怎么向vb.net转换

问题描述 程序中应用到了hydraulicsdll.dll,在使用中需要调用dllvb6调用dll的函数如下,里面有个asanyPublicDeclareFunctionDWFluxMinLib"hydraulicsdll.dll"_(ByValRheoModelAsInteger,ByRefpMudAsany,ByRefpWellPathAsWELLPATH)AsDouble在调用的时候是用的m_FluxMin=DWFluxMin(3,m_HBMud,m_WellPath(0)其中m

在VB6和VB.NET中进行图象捕获

在VB6和VB.NET中进行图象捕获 VB6中进行图象捕获   '---------------------------------------------------------------------------- ' 'Author:lihonggen0 'Date:2002-6-19 '功能:抓屏 '---------------------------------------------------------------------------- Private Type POINT

VB6和VB.NET中对光标的编程

编程 在VB6中利用API对光标进行编程: Option ExplicitPrivate Type POINTAPI    X As Long    Y As LongEnd TypePrivate Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As LongPrivate Declare Function ShowCursor Lib "user32" (ByVal bShow A

VB6.0 COM串口程序采集的数据怎么在Plot曲线控件中实时显示,求各位大神了!谢谢

问题描述 VB6.0 COM串口程序采集的数据怎么在Plot曲线控件中实时显示,求各位大神了!谢谢 RT,VB6.0 编写好COM串口程序采集的数据怎么在Plot曲线控件中实时显示,求各位大神了!谢谢 解决方案 用VB的话还是MSChart比较好用.串口得到数据按照一定的协议解析后直接绑定到控件上就可以了. 解决方案二: http://wenku.baidu.com/link?url=dzFdj7tuMl4yr5NZUIooA2zAwZ5NpT8N8y6P6Z8c7T0k0GQRnOKGa95M

使vb6.0 textbox中选中的字体颜色改变,不是用richtextbox

问题描述 使vb6.0 textbox中选中的字体颜色改变,不是用richtextbox 只要能解决就行,随便什么方法,.....(麻烦一点也行) 虚心求教,小弟想知道具体怎么实现,有代码最好.谢谢! 解决方案 textbox不行,还是得用richtextbox 解决方案二: 需要重绘文本.重绘文本需要子类化窗口,但是VB6调试这种窗口回调函数只要遇到错误就导致IDE崩溃.所以不建议你搞. 解决方案三: 当然,难度也不算非常大,你要肯出个千把块钱,发布到威客网站上,会有一些VB爱好者帮你写出一堆

VB6.0中For语句的两种用法,如何用第二种用法遍历一个数组?

问题描述 VB6.0中For语句的两种用法,如何用第二种用法遍历一个数组? VB6.0中For语句的两种用法,如何用第二种用法遍历一个数组? 解决方案 正序 for i = lbound(arr) to ubound(arr) arr(i) next 逆序 for i = ubound(arr) to lbound(arr) step -1 arr(i) next 解决方案二: 一个加密解密函数 for vb6.0!VB6.0中的编译预处理--#IF语句

vs2010-vs2015的VB与VB6.0的VB有什么区别?

问题描述 vs2015的VB与VB6.0的VB有什么区别? 听说vs可以写C程序和VB程序,我果断把原来的VB6.0和VC卸了.安装了最新的vs2015.可是在编VB程序时,我发现vs里面的VB跟VB6.0的VB的语法相差很大.请问他们都是同一种编程语言吗? 解决方案 几乎可以说是不同的一门语言了,VB是面向过程 模块化的,后来的vb也升级成了vb.net了,要运行于.net虚拟机之中.类似于JAVA. 好处就是不管那一台机,只要能装上.net的运行vb.net的程序都不会产生兼容性问题.无论你