初学者,VB帮我看看我这段程序怎么了

来源:百度知道 编辑:UC知道 时间:2024/05/11 01:49:04
Option Explicit

Private Sub Form_Click()
Dim s1, s2, s3 As String
s1 = Text1.Text
s2 = Text2.Text
Call delstr(s1, s2, s3)
Text3.Text = s3
End Sub

Private Sub Form_Load()
Label1.Caption = "原字符串"
Label2.Caption = "删除字符串"
Label3.Caption = "删除后的字符串"
Text1.Text = ""
Text2.Text = ""
Text3.Text = ""
End Sub

Private Sub delstr(ByVal s1 As String, ByVal s2 As String, s3 As String)
Dim i, n As Integer
Do While InStr(s1, s2) > 0
s3 = s3 & Left(s1, InStr(s1, s2) - 1)
s1 = Right(s1, Len(s1) - InStr(s1, s2) + 1)
Loop
End Sub
这段程序的意思是把S2从S1中删除
怎么会产生死连呢。

楼主是要在S2中输入指定字符比如ac S1中是abcd S3输出应该是bd
1楼三楼回答的只能删除连续字符 达不到目的
而楼主 却在Do While InStr(s1, s2) > 0 这里陷入了死循环~导致假死

建议你还是不要调用过程。。还是老老实实在FORM_CLICK里写就好

教你简单的!

Private Sub Form_Click()
Dim s1, s2, s3 As String
s1 = Text1.Text
s2 = Text2.Text
Text3.Text = Replace(s1, s2, "")
End Sub

1、Dim s1, s2, s3 As String 定义不对 S1 S2为variant,参数不对是传不进去数据的 Dim s1 As String , s2 As String , s3 As String
2、Do While InStr(s1, s2) > 0 ......1
s3 = s3 & Left(s1, InStr(s1, s2) - 1) ......2
s1 = Right(s1, Len(s1) - InStr(s1, s2) + 1) ......3
Loop
这个用得不是很好,没有必要用do loop ,而却觉得你第3句写错了。用个IF就很合适
IF InStr(s1, s2) > 0
s3 = s3 & Left(s1, InStr(s1, s2) - 1)
END IF
这样可能更好