• [转载]VB6里用于裁剪数组的函数


    转自(http://www.cnblogs.com/IDqq/archive/2006/04/04/366459.html)

    VB.NET里的Array类提供了很多对数组进行拷贝、裁剪等操作的方法。在VB6里如何在保证效率的前提下实现这些功能?本文给出一个用于裁剪数组的函数实现。

    1 API声明

    Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" _
            (hpvDest As Any, hpvSource As Any, ByVal cbCopy As Long)

    2 实现:

    ' 返回byt的从iStart开始,长度是iLen的一段副本
     Private Function SubArray(byt() As Byte, ByVal iStart As Long, ByVal iLen As Long) As Byte()
         Dim buf()           As Byte
     
         ReDim buf(iLen - 1) As Byte
         ' 这里byt(0)和byt(iStart)传进去的是地址
         CopyMemory buf(0), byt(iStart), iLen
     
         SubArray = buf
    End Function

    3 示例:
    下面给出一个用上面的方法截取字符串的小例子,字符串里含有全角和半角字符(全角按2bytes算)

    Dim byt()        As Byte
    ' 使用当前系统ASNI代码页把Unicode字符串转成ASNI码的多字节数组
    byt = StrConv("一二三ABC", vbFromUnicode)
    ' 截取前两byte,再转回Unicode码。对话框显示"一"。
    MsgBox StrConv(SubArray(byt, 0, 2), vbUnicode)
  • 相关阅读:
    Cannot get a NUMERIC value from a STRING cell? 已解决
    Android Studio快捷键大全
    mysql索引
    eclipse中出现错误 Syntax error, insert "}" to complete Block
    function
    IGS OPC UA 配置
    IFIX 5.9 历史数据 曲线 (非SQL模式)
    IFIX 5.9 报警存sql
    IFIX 数据源 节点 标签 域名
    IFIX 目录结构
  • 原文地址:https://www.cnblogs.com/Spacecup/p/3865054.html
Copyright © 2020-2023  润新知