1

我有一个 VB6 程序,可以将文本框中的文本保存到文件中,当你再次打开它时,相同的文本会在那里,但是每当我重新打开它时,文本框文本现在都有引号,我怎么能删除引号?代码是:

Private Sub Form_Load()
On Error GoTo NoFile
Randomize

Dim sFile As String
Dim Blank As String
Dim c1Path As String
Dim iFileNum As Integer

sFile = "C:\JPLData"

iFileNum = FreeFile
Open sFile For Input As iFileNum

Line Input #iFileNum, c1Path
Close #iFileNum
Text1.Text = c1Path

NoFile:
If Err.Number = 5 Then
sFile = "C:\JPLData"
c1Path = "No Custom Defined."

iFileNum = FreeFile
Open sFile For Output As iFileNum
Write #iFileNum, Text1.Text
Close #iFileNum
End If


End Sub

Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
Dim sFile As String
Dim cName As String
Dim iFileNum As Integer

sFile = "C:\JPLData"
cName = vbClrf & Text1.Text & vbClrf

iFileNum = FreeFile
Open sFile For Output As iFileNum
Write #iFileNum, cName
Close #iFileNum

End Sub

编辑:我已经回答了我自己的问题,我拼错了 vbCrLf,并且我忘记添加 BLsnk 变量来处理引号:P

4

4 回答 4

2

文档说使用语句写入的数据通常Write #使用Input #语句读取。

另外:使用语句写入的数据Print #我们通常使用语句读取Line Input #

您正在与 混合Write #Line Input #因此不一致。

于 2013-10-06T19:48:26.647 回答
0

LINE INPUT从文件中读取整行文本,包括逗号和引号。使用LINE INPUT您可以将类似 CSV 数据示例的内容读入一个字符串变量:

12345,"John Doe","Fake Street",123,"Test Town",900343

整行将成为一个字符串,您必须自己拆分它。的“相反”陈述LINE INPUTPRINT原样PRINT作为字符串输出到文件中。该字符串可能包含逗号、引号等。

INPUT用于从一行中读取单独的字段(列值 = 单元格!)。它期望格式WRITE产生。所以INPUTWRITE一起去吧。使用INPUT您可以从文件的单个逗号分隔行中读取多个变量,而无需自己拆分列。您不必使用split或任何正则表达式的东西。此外,您不必进行任何类型转换。WRITEINPUT携手合作。

例如,可以像这样读取逗号分隔的数据行:

Dim Id As Integer, FullName As String, Street As String, Income As Double
...
' Write a few separated fields in one operation:
Write #fx, Id, FullName, Street, Income
...
' Read all the fields with different types using just one line of code:
Input #fy, Id, FullName, Street, Income   ' Read the cell values straight into your variables

如果您将两对LINE INPUT/PRINTINPUT/混合使用WRITE,在大多数情况下您将无法获得预期的结果。

如果您只想保存/恢复单个字符串(无论它可能包含什么逗号,...)并且没有多个字段(尤其是具有不同数据类型(整数、字符串、...)),请使用LINE INPUTand PRINT。这些不包括任何字段分离处理。只需使用 . 分隔的整行即可vbCrLf。如果你使用PRINT,你不需要写任何额外vbCrLf的字符,因为PRINT会在末尾自动包含一个换行符。(如果您不想在末尾;换行,请在语句行的末尾放一个。)

' Save a single String
Dim ff As Integer, MyString As String
ff = FreeFile
MyString = "Hello World!"
Open "myfile.txt" For Output As #ff
Print #ff, MyString   'Just write the String without any additional characters.
Close #ff

' ... Later restore the entire line into one String:
Dim RestoredString As String
ff = FreeFile
Open "myfile.txt" For Input As #ff
Line Input #ff, RestoredString
Close #ff
于 2013-10-06T20:57:45.233 回答
0

要在写入文件时删除字符串引号,请使用 Print 而不是 Write。

Dim ff As Integer, MyString As String
ff = FreeFile
TheString= "test"
Open "myfile.txt" For Output As #ff
Print #ff, TheString
Close #ff
于 2013-10-07T11:11:42.917 回答
0

[Line] Inputand命令是相当古老的Write语句,仍然保留了许多遗留行为。其中之一很可能是添加引号。

这个最简单的修复可能只是在显示文本框时删除引号。所以改变这一行:

Text1.Text = c1Path

对此:

Text1.Text = Replace(c1Path, Chr(34), "")

Chr(34)是引号字符,该函数Replace只是在c1Path字符串中搜索 (quotes) 的所有实例,Chr(34)并将它们替换为空字符串 ( "",它是空字符串),从而有效地删除它们。

于 2013-10-06T17:57:14.147 回答