在VB6中使用integer数组创建一个字符串并输出(姊妹篇)

Option Explicit
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)

'在过程中声明的变量,都建立在栈上,先声明的变量在高地址,后声明的变量在低地址,而字符串中的字节排在前面的在低地址,排在后面的在高地址,恰好与这相反
Sub main()
    Dim a4 As Integer
    Dim a3 As Integer
    Dim a2 As Integer
    Dim a1 As Integer
    Dim a0 As Integer
    Dim x As Integer
    Dim y As Integer
    
    Dim s As String
    
    '生成字符串的长度
    y = 8
    x = 0
    '在数组中生成"BSTR"字符串,并以0结尾
    CopyMemory a0, 66, 2
    CopyMemory a1, 83, 2
    CopyMemory a2, 84, 2
    CopyMemory a3, 82, 2
    CopyMemory a4, 0, 2
    'a0 = 66    '上面五句也可以写成这样,但是缺少了指针操作的味道
    'a1 = 83
    'a2 = 84
    'a3 = 82
    'a4 = 0
    
    Dim ps As Long
    ps = VarPtr(s)  '获取字符串变量的地址
    Dim pi As Long
    pi = VarPtr(a0) '获取字符串存储位置的起始地址
    CopyMemory ByVal ps, pi, 4 '把存储字符串的开始地址存入字符串变量的地址中
    'CopyMemory ByVal VarPtr(s), VarPtr(a0), 4 '上面五句也可以合并成本句
    Debug.Print s

End Sub

    源代码中的注释已经说明问题了。

    写完代码,再去看书,发现书上说的已经足够清楚。愚笨的只是自己,算是给“纸上得来终觉浅,绝知此事要躬行。”做注吧。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kingdragonfly

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值