VB6不需要读取c:\test.txt的结果

VB6不需要读取c:\test.txt的结果,vb6,Vb6,我从text103.text开始,它的文本值是我想要检查的C:\test.txt。所以,如果text103.text中的内容与C:\test.txt label3.caption中的内容匹配,那么应该是“成功”,但每次运行它时,我都会得到“失败”为什么 下面是我按钮中的代码: Private Sub Command1_Click() nFileNum = FreeFile Open "C:\test.txt" For Input As nFileNum lLineCou

我从text103.text开始,它的文本值是我想要检查的C:\test.txt。所以,如果text103.text中的内容与C:\test.txt label3.caption中的内容匹配,那么应该是“成功”,但每次运行它时,我都会得到“失败”为什么

下面是我按钮中的代码:

Private Sub Command1_Click()

    nFileNum = FreeFile
    Open "C:\test.txt" For Input As nFileNum
    lLineCount = 1

    Do While Not EOF(nFileNum)
       Line Input #nFileNum, sNextLine
       sNextLine = sNextLine & vbCrLf
       sText = sText & sNextLine
    Loop
    Text102.Text = sText
    Close nFileNum


    If Text102.Text = Text103.Text Then
        Label3.Caption = "success"
    Else
        Label3.Caption = "failure"
    End If


End Sub

即使当我的text103.text以“hello”开头时,我编辑C:\test.txt只是说“hello”,它也总是给我label3.caption“failure”!!!为什么???

这是因为您正在添加换行符text103。text没有这个功能。

这是因为您正在添加换行符text103。text没有这个功能。

可能是因为您总是在从文件读取的数据中添加换行符。
Text103.Text
是否也包含新行

更新:

vbCrLf
aka
\r\n
空白字符集的一部分,因此您可能无法直接看到它们

之前,如果Text102.Text=Text103.Text,则尝试
msgbox“Len 102”和Len(Text102.Text)以及“Len 103”和Len(Text103.Text)

这将表明字符串的长度不同,因此它们不能相等

或者,在即时模式下尝试
?“[”&text102.Text&“]”
?“[”&text103.Text&“]”
假设所讨论的单词是“Hello”,我打赌第一个会打印出来

[你好
]

第二个

[您好]

可能是因为您总是在从文件读取的数据中添加换行符。
Text103.Text
是否也包含新行

更新:

vbCrLf
aka
\r\n
空白字符集的一部分,因此您可能无法直接看到它们

之前,如果Text102.Text=Text103.Text,则尝试
msgbox“Len 102”和Len(Text102.Text)以及“Len 103”和Len(Text103.Text)

这将表明字符串的长度不同,因此它们不能相等

或者,在即时模式下尝试
?“[”&text102.Text&“]”
?“[”&text103.Text&“]”
假设所讨论的单词是“Hello”,我打赌第一个会打印出来

[你好
]

第二个

[你好]

这可能与您的拖尾回车有关吗?看起来您读取的文件末尾总是有一个vbCrLf,而您的text103可能没有。您能进入调试模式并确认每个字符串包含的内容吗?

这可能与您的尾部回车有关吗?看起来您读取的文件末尾总是有一个vbCrLf,而您的text103可能没有。您能进入调试模式并确认每个字符串包含的内容吗?

我猜这与您添加的换行符(
vbCrLf
)或类似字符有关


否则它可能取决于大小写,您可以尝试在文件顶部添加
选项比较文本。

我猜这与您添加的换行符(
vbCrLf
)或类似字符有关

否则它可能取决于大小写,您可以尝试在文件顶部添加
选项比较文本。

尝试以下操作:

Private Sub Command1_Click()

nFileNum = FreeFile
Open "C:\test.txt" For Input As nFileNum
lLineCount = 1

Do While Not EOF(nFileNum)
   Line Input #nFileNum, sNextLine
   sNextLine = sNextLine & vbCrLf
   sText = sText & sNextLine
Loop
Text102.Text = sText
Close nFileNum


If Replace$(Text102.Text, VBCrLf, "") = Replace$(Text103.Text, VbCrLf, "") Then
    Label3.Caption = "success"
Else
    Label3.Caption = "failure"
End If


End Sub
试试这个:

Private Sub Command1_Click()

nFileNum = FreeFile
Open "C:\test.txt" For Input As nFileNum
lLineCount = 1

Do While Not EOF(nFileNum)
   Line Input #nFileNum, sNextLine
   sNextLine = sNextLine & vbCrLf
   sText = sText & sNextLine
Loop
Text102.Text = sText
Close nFileNum


If Replace$(Text102.Text, VBCrLf, "") = Replace$(Text103.Text, VbCrLf, "") Then
    Label3.Caption = "success"
Else
    Label3.Caption = "failure"
End If


End Sub


请重新格式化您的问题,使源代码成为源代码。那对眼睛更容易。非常感谢。你为什么不打断if语句,检查Text102.Text和Text103.Text的内容呢?我不明白,我是一个非常新的程序员,但是当我看到文本框102和103时,我发现它们包含相同的单词。我同意目前为止的答案,这是你添加到sNextLine末尾的新行
hello
hello\r\n
不相等,即使它们在调试器中看起来可能相同,因为不显示换行符。请重新格式化您的问题,使源代码成为源代码。那对眼睛更容易。非常感谢。你为什么不打断if语句,检查Text102.Text和Text103.Text的内容呢?我不明白,我是一个非常新的程序员,但是当我看到文本框102和103时,我发现它们包含相同的单词。我同意目前为止的答案,这是你添加到sNextLine末尾的新行
hello
hello\r\n
不相等,即使它们在调试器中看起来可能相同,因为不显示换行符。Text103仅为一行,并且应该始终仅为一行。。。我是否只删除行输入#nFileNum,sNextLine?它可能是一行,但您仍在添加换行符:sNextLine=sNextLine&vbCrLf sText=sText&sNextLine,这样您的文本文件可能会显示“hello”,但sText将显示“hello\n”。Text103仅为一行,并且应该始终只有一行。。。我是否删除了行输入#nFileNum,sNextLine?它可能是一行,但您仍在添加一个换行符:sNextLine=sNextLine&vbCrLf sText=sText&sNextLine,这样您的文本文件可能会读为:“hello”,但sText会读为“hello\n”。text102.text和text103.text都应该只包含一行(一个单词)。假设文本文件包含
Hello
。在循环中,您添加了一个
vbCrlF
,因此
Text102。Text
现在包含
Hello
和两个额外字符,这是一个回车符和换行符(即vbCrlF)。是的,但您将vbCrlF附加到sNextLine。这意味着sText包含一个vbCrLf。Text103.txt似乎没有显示。因此,它们永远不会匹配。也许您应该告诉我们Text103.txt的值来自何处。text102.text和Text103.text都应该只包含一行(一个单词)。假设文本文件包含
Hello
。在循环中添加一个
vbCrlF
,因此
Text102。Text
现在包含
Hello
和两个额外字符,这两个字符