- 1、本文档共7页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
浅议VB6字节数组和字符串的相互转换
一、前言
数据类型转换在编程中经常用到,VB6提供了一整套类型转换的函数。但是,在进行类型转换时,有时候仅仅依靠VB提供的函数是不能达到自己的目的的。因此,需要考虑用其他的方法来完成数据类型转换。本文仅谈VB6中字节数组和字符串的相互转换过程中应注意的问题及其解决办法。
在VisualBasic中使用Byte数组主要是为了32位API函数的参数传递和函数的返回。在32位的VisualBasic版本中,字符串被假定为Unicode字符,其中每个字符占用两个字节。系统自动地将Unicode的两个连续字节转换成1个字节的ANSI字符。但是,如果该字符串包含二进制数据,其内容将变得很难理解。例如,一个汉字是两个字节,在VisualBasic6.0中的长度就只是1,这将给我们计算单个汉字的国标码带来一些麻烦。有了Byte数组,这些问题就将迎刃而解。
另外,VisualBasic中的字符串和C语言中的字符串有一些不同,本文将给出一个函数,把C字符串转换成VisualBasic字符串。
二、用Byte数组代替字符串
Byte数组包含的是0-255之间的ASCII码字符,它不会象字符串那样被系统作预处理。你可以在很多API函数中用来Byte数组代替字符串。
例如,下面的代码中用GetSystemDirectory这个WindowsAPI函数来取得Windows的系统路径。一共有两段代码,一段代码是传递一个字符串来存储函数返回的系统路径,另一段代码是传递一个Byte数组来代替字符串。
为了更好地比较,两段代码的不同部分都用黑体标出。读者可以仔细比较这两段代码的差异,这样您会更深入地理解Byte数组和字符串的差别。
把这两段代码的任何一段放入一个窗体中运行,但击窗体的空白区域,你将会在窗体中看到Windows的系统路径。
下面是使用字符串的代码:
PrivateDeclareFunctionGetSystemDirectoryLibkernel32Alias_
GetSystemDirectoryA(ByVallpBufferAsString,ByValnSizeAsLong)AsLong
PrivateSubForm_Click()
DimnAsInteger
DimstrAsString
str=Space$(256)
n=GetSystemDirectory(str,256)
str=Left$(str,n)
Printstr
EndSub
在上面这段代码中,字符串参数lpBuffer返回Windows的系统路径。在函数调用之前,将变量预定义成256个字符,并在函数返回时清除多余的字符。
注意:
在调用API函数之前,通常都需要预先定义一个字符串或者Byte数组以供API函数存储数据。应该养成这种良好的编程习惯。否则,你的程序有可能崩溃,甚至导致你的系统崩溃。
下面是使用Byte数组的代码:
PrivateDeclareFunctionGetSystemDirectoryLibkernel32Alias_
GetSystemDirectoryA(ByReflpBufferAsByte,ByValnSizeAsLong)AsLong
PrivateSubForm_Click()
DimnAsInteger
DimBuffer()AsByte
DimstrAasString
Buffer=Space$(256)
n=GetSystemDirectory(Buffer(0),256)
strA=StrConv(Buffer,vbUnicode)
strA=Left$(strA,n)
PrintstrA
EndSub
不知道读者注意到没有,第二段代码中的GetSystemDirectoryAPI函数的声明已经改变了。第一个参数的声明由一个ByVal字符串变成了一个ByRef的Byte数组,即由声明:
ByVallpBufferAsString
PublicSubMultiCStringToStringArray(psMultiCStringAsString,psaStrings()AsString)
参数psMultiCString是待转换的多个C字符串
参数psaStrings是返回的VB字符串数组,调用之前它必须是一个动态的空数组
DimiNullPosAsInteger
您可能关注的文档
- 浅析资本资产定价模型在中国的应用.doc
- 浅析资料管理人员应具备的素质.doc
- 浅议企业全面预算管理中存在的问题及对策.doc
- 红色经典诵读演讲比赛主持词.docx
- 红色旅游专题研究.docx
- 红色书籍读书心得-心得体会模板.doc
- 红色团支部建设评比活动宣讲稿.doc
- 红色之旅─遵义会址策划书.doc
- 红色之旅少先队活动方案.doc
- 红色之旅社会实践报告.docx
- 第18讲 第17课 西晋的短暂统一和北方各族的内迁.docx
- 第15讲 第14课 沟通中外文明的“丝绸之路”.docx
- 第13课时 中东 欧洲西部.doc
- 第17讲 第16 课三国鼎立.docx
- 第17讲 第16课 三国鼎立 带解析.docx
- 2024_2025年新教材高中历史课时检测9近代西方的法律与教化含解析新人教版选择性必修1.doc
- 2024_2025学年高二数学下学期期末备考试卷文含解析.docx
- 山西版2024高考政治一轮复习第二单元生产劳动与经营第5课时企业与劳动者教案.docx
- 第16讲 第15课 两汉的科技和文化 带解析.docx
- 第13课 宋元时期的科技与中外交通.docx
最近下载
- 单向板肋梁楼盖计算.docx
- 作业4:工学一体化课程《小型网络安装与调试》工学一体化课程考核方案.docx VIP
- 中国画之写意画.ppt VIP
- (2019苏教)小学科学三年级上册:全册整套教案资料.pdf
- 核心素养导向的高中数学课例设计研究与实践(样例)(1).doc
- 驾驶证延期委托书模板.doc
- 作业5:工学一体化课程《小型网络安装与调试》工学一体化课程终结性考核试题.docx VIP
- 作业5:工学一体化课程《小型网络安装与调试》工学一体化课程终结性考核试题.pdf VIP
- 中国画的构图形式ppt课件.pptx
- 作业11:《小型网络安装与调试》工学一体化课程教学进度计划表.pdf VIP
文档评论(0)