科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件VB VC混合编程疑难问题解

VB VC混合编程疑难问题解

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

本文介绍了VB6.0在与VC 6.0混合编程时几个常见难题的解决方法。

作者:务实 来源:天极网 2007年10月14日

关键字:

  • 评论
  • 分享微博
  • 分享邮件
四、中英文混合型字符串输出长度的确定

  中英文混合型字符串输出长度的确定问题在VB编程中经常遇到,而且可以通过VB, VC++混合编程有效解决,所以在此一并给出。

  VB编程中,经常需要得到某个字符串在实际输出时所需要的长度。这时,我们通常会考虑Len()和LenB()这两个函数。

  我们知道,Len()返回的是字符串中字符的个数,对于不含中文字符的字符串,其返回值通常就等于该字符串的输出长度;LenB()返回的则是按照双字节字符集(DBCS)计算出的字符串所占用的字节数,对于纯中文字符组成的字符串,其返回值通常也等于该字符串的输出长度。但是,当字符串中既有中文又有英文(这里将数字等视为英文)字符时,二者的返回值都不等于该字符串的输出长度。比如:“A中国人”这个字符串,用Len()函数时将返回4;LenB()则返回8;而实际输出时(比如向某记录文件输出该字符串),它将占用7个印刷符(每个英文字符占1个,每个中文字符占2个)。

  为了计算中英文混合型字符串的输出长度,我们可以用VC++编写一个完成此计算的DLL库函数,在VB中直接调用该函数即可。该VC++函数和VB中的调用代码如下:

  1) VC++ 6.0中的DLL函数

long APIENTRY Sizeof_vbString(char* at)
{
return (long)(::atrlen(st));
//::atrlen()返回int值,但在32位操作系统下,
//VC++中的int类型与VB中Long类型的范围是相当的
}

  2) VB 6.0中对Sizeof_vbString()的声明和调用

......
Declare Function Sizeof_vbString Lib "C:\DLLTest.dll"_
(By Val st As String) As Long
......
......
Dim stLen&
stLen=Sizeof_vbString ("A中国人")
stLen=7
......

  应该指出:上述方法同样可以计算纯英文或纯中文字符串的输入长度。

查看本文来源

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章