回 帖 发 新 帖 刷新版面

主题:mid语句把我搞的晕头转向(不是mid函数)

Private Sub Form_Load()
Form1.AutoRedraw = True
[color=0000FF]    a$ = "123456789"
    Mid$(a$, 2) = a$
    Print a$[/color]    

 [color=FFFF00]  a$ = "123456789"
 Mid$(a$, 3) = a$
    Print a$[/color]
End Sub
请哪位 高人 给我解释 下蓝色部分的 代码为什么是 那样的结果 ,黄色的 结果我觉得是明白的,这个问题非常困扰我!!!!!!!!!,强烈求助估计没人会!!!!!!

回复列表 (共5个回复)

沙发

只看出了规律,为什么,我是不知道的。查了查,mid的这种用法还真没有找到说明。你管他叫mid语句也算一种区别吧。

板凳

Private Sub Form_Load()
Me.AutoRedraw = True
    a$ = "123456789"
    Mid$(a$, 2) = a$
    Print a$

    a$ = "123456789"
    Mid$(a$, 3) = a$
    Print a$

    a$ = "123456789"
    Mid$(a$, 4) = a$
    Print a$

    a$ = "123456789"
    Mid$(a$, 4) = String$(5, 0)
    Print a$
End Sub

3 楼

这个得看MSVBVM60.__vbaMidStmtBstr是怎么实现的了。
汇编水平不行,在OllyDbg下看不懂这个具体是怎么做的,还原不了。
用mid$时得注意下这个经验教训了

4 楼

为什么不做一个对比例子:
    a$ = "123456789"
    b$ = "123456789"
    Mid$(a$, 2) = b$
    Print a$
和下面的对比:
    a$ = "123456789"
    Mid$(a$, 2) = a$
    Print a$

看起来是一样的,但结果完全不同(说明没有重新分配临时变量)。
我怀疑这个应该违背了语句本来的意愿,多半是编错了,但因为很少人用,没修正,[em3]
应该为了速度,所以才没有分配临时变量,所以也有可能是我们用错了![em9]

5 楼

这个语句就不应该这么用。Mid语句的用法MSDN上也没这一条

我来回复

您尚未登录,请登录后再回复。点此登录或注册