|
网站首页
|
业界新闻
|
小组
|
威客
|
人才
|
下载频道
|
博客
|
代码贴
|
在线编程
|
编程论坛
|
登录
注册
短消息
我发表的主题
我参与的主题
我收藏的贴子
我上传的附件
我下过的附件
编辑个人资料
我的博客
用户控制面板
搜索
道具
恢复默认风格
碧海青天
秋意盎然
棕红预览
粉色回忆
蓝雅绿
紫色淡雅
青青河草
e点小镇
橘子红了
红红夜思
水晶紫色
雪花飘飘
新年快乐
风格
短消息
论坛展区
帮助
编程论坛
→
开发语言
→
『 VB6论坛 』
→ 数据类型不同,赋值时提示错误。
我的收件箱(0)
欢迎加入我们,一同切磋技术
用户名:
密 码:
共有
1629
人关注过本帖
标题:
数据类型不同,赋值时提示错误。
只看楼主
加入收藏
初始元灵
等 级:
论坛游民
帖 子:72
专家分:46
注 册:2016-10-10
结帖率:
91.67%
楼主
收藏
已结贴
√
问题点数:10 回复次数:11
数据类型不同,赋值时提示错误。
与下位机进行通讯,发送一个字符串指令过去,返回一个字符串
返回的字符串解析时是从中间提取两个位的值出来,我定义了一个Byte型数组Byte2
从字符串中提取16进制数 F 并赋给Byte2(1)时直接报错,说不匹配
为什么会这样?是因为它没把 F 当成数而是当成了字符吗?
该怎样修改才对?
Byte2(1) = Mid(tmpS, 7 + 2 * i, 1)
'就这句话,等号后面就是 F
2016-10-17 10:48
举报帖子
使用道具
赠送鲜花
初始元灵
等 级:
论坛游民
帖 子:72
专家分:46
注 册:2016-10-10
第
2
楼
收藏
得分:0
版主版主,求拯救。
三清之始
2016-10-17 10:53
举报帖子
使用道具
赠送鲜花
初始元灵
等 级:
论坛游民
帖 子:72
专家分:46
注 册:2016-10-10
第
3
楼
收藏
得分:0
我这样写可以吗?
Byte2(1) = Hex(Mid(tmpS, 7 + 2 * i, 1))
三清之始
2016-10-17 11:01
举报帖子
使用道具
赠送鲜花
xzlxzlxzl
来 自:湖北
等 级:
贵宾
威 望:
125
帖 子:1091
专家分:5825
注 册:2014-5-3
第
4
楼
收藏
得分:5
Byte2(1) = asc(Mid(tmpS, 7 + 2 * i, 1))-asc("A")+10
Byte2(1)="F"=15
mid、hex都是字符串函数,返回的都是字符串类型,byte型是数值类型。
[此贴子已经被作者于2016-10-17 11:06编辑过]
2016-10-17 11:04
举报帖子
使用道具
赠送鲜花
初始元灵
等 级:
论坛游民
帖 子:72
专家分:46
注 册:2016-10-10
第
5
楼
收藏
得分:0
回复 4楼 xzlxzlxzl
也就是说不能将 F 赋值给Byte2(1)会报错,将15直接赋给它吗。
三清之始
2016-10-17 11:15
举报帖子
使用道具
赠送鲜花
xzlxzlxzl
来 自:湖北
等 级:
贵宾
威 望:
125
帖 子:1091
专家分:5825
注 册:2014-5-3
第
6
楼
收藏
得分:0
这其实是将字符型的16进制数转换为数值的问题,如果你从上位机接受来的数据是2位的16进制数的字符串的话,最终需要变换为数值进行运算,这种转换需要自己写个函数完成。
2016-10-17 11:20
举报帖子
使用道具
赠送鲜花
风吹过b
等 级:
贵宾
威 望:
364
帖 子:4947
专家分:30084
注 册:2008-10-15
第
7
楼
收藏
得分:5
Mid 返回的是字符串,而 VB6 里,字符串属复杂类型,保存的是指针。
BYTE,是简单类型,在内存里直接保存值。
你可以理解为 BYTE保存的是一个 0-255 的数值,而单个字符使用 asc 转化为这个值后,就可以保存到这个 BYTE 里去了。
-----------------
接收下位机,为啥是用 字符串接收,不是用
BYTE() 接收吗?
授人于鱼,不如授人于渔
早已停用QQ了
2016-10-17 15:42
举报帖子
使用道具
赠送鲜花
初始元灵
等 级:
论坛游民
帖 子:72
专家分:46
注 册:2016-10-10
第
8
楼
收藏
得分:0
回复 7楼 风吹过b
我同学写的发送字符串过去,其实是可以用字节的,这个坑货!
三清之始
2016-10-17 16:24
举报帖子
使用道具
赠送鲜花
风吹过b
等 级:
贵宾
威 望:
364
帖 子:4947
专家分:30084
注 册:2008-10-15
第
9
楼
收藏
得分:0
接收时,如果纯ASCII 码,用字符串接收也没啥问题。
如果需要取字节,收到后用
StrConv 函数整体转换一下吧。
需要读 integer 或 long 时,使用 CopyMemory 按字节复制,也可以用 LSET 转换。
简单结构也可以照此转换。
授人于鱼,不如授人于渔
早已停用QQ了
2016-10-17 17:01
举报帖子
使用道具
赠送鲜花
风吹过b
等 级:
贵宾
威 望:
364
帖 子:4947
专家分:30084
注 册:2008-10-15
第
10
楼
收藏
得分:0
接收时,如果纯ASCII 码,用字符串接收也没啥问题。
如果需要取字节,收到后用
StrConv 函数整体转换一下吧。
需要读 integer 或 long 时,使用 CopyMemory 按字节复制,也可以用 LSET 转换。
简单结构也可以照此转换。
授人于鱼,不如授人于渔
早已停用QQ了
2016-10-17 17:01
举报帖子
使用道具
赠送鲜花
12
1/2页
1
2
快速回复:
数据类型不同,赋值时提示错误。
数据加载中...
关于我们
|
广告合作
|
编程中国
|
清除Cookies
|
TOP
|
手机版
编程中国
版权所有,并保留所有权利。
Powered by
Discuz
, Processed in 0.024879 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved