请问这个查找的VB题目我哪儿有问题!!在执行过程中没有反映!

来源:百度知道 编辑:UC知道 时间:2024/06/03 04:28:27
Option Explicit
Dim S As String
Private Sub Command1_Click()
Dim S1 As String, S2 As String
S1 = Text1: S2 = Text2
Call replace(S1, S2, S)
Text3 = S
Close #10
Open "c:\Data.txt" For Output As #15
Print #15, S
End Sub

Private Sub replace(S1 As String, S2 As String, S As String)
Dim M As Integer, N As Integer, M1 As String, N1 As String
Dim i As Integer
M = Len(S)
N = Len(S1)
N1 = UCase(S1)
i = 1
Do While i < M
M1 = Mid(S, i, N)
If UCase(M1) = N1 Then
S = Left(S, i - 1) & S2 & Right(S, M - i + 1 - N)
Text3 = S
i = i + Len(S2)
M = M + Len(S2) - N
Else
i = i + 1
End If
Loop
End Sub

Private Sub Form_Load()
Dim N As Integer, S As String
Open "c:\Da

问题出在 S 的值上,你的代码中 S 值=空,因此你的repalce过程中的S也是空,那么M=0,那么do..loop就不会执行,不信你在do循环中放一个msgbox,看看会不会弹出信息框! 既然S="" ,那么 text3 丢失字符也是自然的,那么,data.txt变成空也是情理之中的.

仅以代码来分析,未做测试,不过,应该是这样的问题,要想解决此问题,你试试把form_load()事件中的 S AS String 这句去掉..

另外,还有一些其他问题,比如打开文件,却没有关闭,你自己再看看!!