プロが教えるわが家の防犯対策術!

Visual Basic 6.0で ファイルをコピーするソフトを作っています。
ただ1行のなかに0000から0020までのコントロールコードが入っていところが所々あります。

だからその行にはLine Input では正確に読み込めません。
書き込むと違う文字になっています。

char = Input (1, #1)
char = inputB(1, #1)

でバイナリが含まれている1行だけ読み込みみたいのですが
0D 0A
すなわち CR LF
まで読み込むにはどうしたら良いのでしょうか?

この文章の意味がわかる方お願いします。

質問者からの補足コメント

  • >UTF-8ファイルを読んだ時点で文字化け→文字化けのままファイルに書き込み、となっていると思われます。
    確かにその通りでした。
    http://homepage1.nifty.com/cadconv/kaiseki.xls
    正確にアップロードできないのです。理由はわかりません。
    \W0.781;\Q+8.00;\A1;2

    \W0.781;\Q+8.00;\A1;・・
    になっていました。

    すなわち
    5C 57 30 2E 38 33 33 3B 5C 41 31 3B EF BC B4 EF BC 8E EF BC AB 0D 0A

    5C 57 30 2E 38 33 33 3B 5C 41 31 3B 81 45 B4 81 45 8E EF BC AB 0D 0A
    になっていました。

    No.7の回答に寄せられた補足コメントです。 補足日時:2016/09/02 09:47
  • 実際は漢字コードは新たに作るファイルにそっくりそのままコピーできればいいんです。
    内容がどうでも構わない。

    変換したいことは
    1.ファイルの中のある範囲内で以下の文字を変換したい。
    __6
    の後の1行の文字列に従って
    __8
    の後の1行の文字列が変換できればいいのです。

    2.その他の文字列は正確に1行1行正確にコピーできれば良い。
    以上

    _は実際は半角スペース 0x20です。

      補足日時:2016/09/02 21:23

A 回答 (22件中21~22件)

直接的な回答ではないのですが、


ファイルをコピーするのであれば、
FileCopy で可能かと思いますが、それではだめなのでしょうか?
特別に1行単位で処理しなければいけない理由があるのでしょうか?
    • good
    • 0
この回答へのお礼

だめです。
基本的に1行ずつ読み込みます。
ある部分では十数行読み込んで解析してある部分を別の文字列に変換して
そのまとまりを一気に書き込みます。
このような動作は何千から何万もあります。

お礼日時:2016/08/31 20:48

最初の一行だけなら、このようにして読み込めます。



Private Sub Command1_Click()
 Dim Fname As String
 Dim iFno As Integer
 Dim i As Long
 Dim buf As String
 Dim bufbyt() As Byte
 Fname = "C:\Temp\Test1\Unknown.txt"
 iFno = FreeFile()
 Open Fname For Binary Access Read As #iFno
  bufbyt = InputB(LOF(iFno), #iFno)
 Close #iFno
 For i = 0 To UBound(bufbyt) - 1
''  buf = buf & Chr(bufbyt(i)) 'バイナリなら、この行は無意味です。
  If bufbyt(i) = 13 And bufbyt(i + 1) = 10 Then Exit For
 Next
 MsgBox i
 ReDim Preserve bufbyt(i + 1)
End Sub
    • good
    • 0
この回答へのお礼

ありがとうございます。
1.
良くわかりませんが最初の一行を読み込んでいるだけのようですが
書き込みは Print #oFno, bufbyt
でいいのですか?

2.
バイナリーの入っていない1行の文字列をD$にコピーできますか?
D$=buf

3.
読み込むファイルは何千行もあるのですが
バイナリーのある行は予測できるのですが
その場合はLine Input D$
でなくてどのようにしたらいいのでしょうか?

お礼日時:2016/08/30 22:38

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!