需要帮助从VB6中删除字符串中的控制字符

时间:2014-10-07 21:24:11

标签: string vb6

我有以下代码搜索ASCII控制字符DEC26(替代)。我需要删除它,但它无法找到它。这也是来自Notepad ++文本的图片。我尝试使用"打开文件名为二进制#1"但这会导致更多问题。我怎样才能删除那个Chr $(26)(SUB)?

enter image description here

Open fileName For Input As #1

Do Until EOF(1)                              
    Line Input #1, LineOfText$               
    Alltext$ = Alltext$ & LineOfText$          
Loop

Alltext$ = Replace$(Alltext$, Chr$(26), "") 

Close #1                                 

1 个答案:

答案 0 :(得分:1)

VB6遵循DOS样式文件读取和DOS中名为SUB(Ctrl + Z)used as an EOF (end of file) marker的ASCII控制字符。

这个循环,

  

直到EOF(1)

实际上在遇到SUB时停止读取也知道为Chr(26)。 您应该将文件读取为二进制文件或使用FileSystemObject。

此代码应该有效:

Dim AllText As String

Set fs = CreateObject("Scripting.FileSystemObject")
Set myFile = fs.OpenTextFile(FileName, 1, False)

AllText = myFile.ReadAll()
myFile.Close

AllText = Replace$(AllText$, Chr$(26), "")

如果将Windows脚本宿主对象模型引用添加到项目中,还可以使用IDE自动完成并使用常量,如ForReading:

Dim fs As New FileSystemObject
Dim myFile As TextStream
Set myFile = fs.OpenTextFile(FileName, ForReading, False)

而不是CreateObject。如果删除类型定义和美元,第一个代码也应该与VBScript一起使用。