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] InputWriteこれらのいずれかが引用符を追加している可能性があります。

この最も簡単な修正は、テキスト ボックスを表示するときに引用符を削除することです。したがって、次の行を変更します。

Text1.Text = c1Path

これに:

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

Chr(34)引用符文字であり、Replace関数はc1Path文字列で (引用符) のすべてのインスタンスを検索し、Chr(34)それらを何も置き換えず ( ""、空の文字列)、効果的に削除します。

于 2013-10-06T17:57:14.147 に答える
0

LINE INPUTコンマと引用符を含むテキスト行全体をファイルから読み取ります。を使用すると、次の CSV データ サンプルのようなものを1 つの文字列変数LINE INPUTに読み込むことができます。

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

行全体が 1 つの文字列になるため、自分で分割する必要があります。の「反対」のステートメントはLINE INPUTですPRINTPRINT文字列をそのままファイルに出力します。その文字列には、コンマ、引用符などが含まれる場合があります。

INPUT単一行から個別のフィールド (列の値 = セル!) を読み取るために使用されます。WRITEフォーマットが生成することを期待しています。だから一緒INPUTに行く。WRITEを使用INPUTすると、自分で列を分割しなくても、ファイルのカンマ区切りの 1 行から複数​​の変数を読み取ることができます。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/の 2 つのペアを混在させるWRITEと、ほとんどの場合、意図した結果が得られません。

単一の文字列 (コンマが含まれている可能性があります) のみを保存/復元し、複数のフィールド (特に異なるデータ型 (整数、文字列、...)) を持たない場合は、LINE INPUTと を選択しPRINTます。これらには、フィールド分離処理は含まれていません。で区切られた行全体で動作しvbCrLfます。を使用すると、最後に 1 つの改行が自動的に含まれるため、追加の文字PRINTを記述する必要はありません。(最後に改行を入れたくない場合は、ステートメント行の最後に a を入れてください。)vbCrLfPRINT;

' 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

ファイルへの書き込み時に文字列の引用符を削除するには、Write の代わりに Print を使用します。

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 に答える