VB6中的长行断开输入结构

时间:2011-12-05 16:40:53

标签: vb6 vbscript

我有一个以逗号分隔的文件

文字档案:

"some_key_1", "Translation 1"
"some_key_2", "Translation 2"
"some_key_3", "Translation 3"
"some_key_4", "Translation 4"
"some_key_5", "I am a very long line of text that has decided to cause an issue for the programmer, I have thus far laughed at his futile attempts to fix me."


Private Sub ImportFile()
Dim strEmpFileName As String
Dim intEmpFileNbr As Integer
Dim strTranslationKey As String
Dim strTranslation As String
Dim error As String

strEmpFileName = "C:\Files\test_file_1.asp"
intEmpFileNbr = FreeFile

Open strEmpFileName For Input As #intEmpFileNbr

Do Until EOF(intEmpFileNbr)
    Input #intEmpFileNbr, strTranslationKey, strTranslation
Loop

End Sub

代码分配文本行直到它到达some_key_5,即使在那里它认为新行上的文本,即使它是一个新行,因为自动换行而不是我按回车。

这有什么办法吗?缩短生产线并不是一种选择。

4 个答案:

答案 0 :(得分:2)

我认为可能的问题是翻译元素中的逗号。我建议你最好的选择是用

读取文件
Line Input #my_file, my_string

声明并手动分开。有关详情,请参阅here

答案 1 :(得分:1)

您可以使用正则表达式匹配“”中的所有字符串,然后将它们成对使用。

至于换行符,你可以在进行正则表达式匹配之前简单地将它们全部替换为空字符串。

答案 2 :(得分:1)

您很可能遇到线路终端问题,并且您可能会停止阅读CR。我建议使用记事本重新创建文件,或者使用带有十六进制模式的文本编辑器查看文件(如果您的真实文件的行数超过几K,则可能会告诉您是否有一条非常长的行)实际上可能是一个问题。)

我根据你提供的数据运行你的代码,msgbox给出字符串的长度和正确的10个字符,并且它有效。当我将第二部分的场长增加到721个字符时,它也有效。

答案 3 :(得分:0)

我选择使用文件系统对象,它可以正常使用相同的数据。它不可能是逗号,因为它会将文件中的数据附加到变量上,并包含逗号之外的信息。然后它会将下一行的项目添加为新密钥。我无法超越这个,甚至尝试从违规项目中删除逗号,它仍然会破坏。但是在我将它切换到文件系统对象后,它可以正常使用相同的数据,我只需要手动拆分它。