Visual Basic 6.0で ファイルをコピーするソフトを作っています。
ただ1行のなかに0000から0020までのコントロールコードが入っていところが所々あります。
だからその行にはLine Input では正確に読み込めません。
書き込むと違う文字になっています。
char = Input (1, #1)
char = inputB(1, #1)
でバイナリが含まれている1行だけ読み込みみたいのですが
0D 0A
すなわち CR LF
まで読み込むにはどうしたら良いのでしょうか?
この文章の意味がわかる方お願いします。
No.2
- 回答日時:
直接的な回答ではないのですが、
ファイルをコピーするのであれば、
FileCopy で可能かと思いますが、それではだめなのでしょうか?
特別に1行単位で処理しなければいけない理由があるのでしょうか?
だめです。
基本的に1行ずつ読み込みます。
ある部分では十数行読み込んで解析してある部分を別の文字列に変換して
そのまとまりを一気に書き込みます。
このような動作は何千から何万もあります。
No.1
- 回答日時:
最初の一行だけなら、このようにして読み込めます。
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
ありがとうございます。
1.
良くわかりませんが最初の一行を読み込んでいるだけのようですが
書き込みは Print #oFno, bufbyt
でいいのですか?
2.
バイナリーの入っていない1行の文字列をD$にコピーできますか?
D$=buf
3.
読み込むファイルは何千行もあるのですが
バイナリーのある行は予測できるのですが
その場合はLine Input D$
でなくてどのようにしたらいいのでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) Android Studio 難しい 4 2023/06/18 22:27
- Visual Basic(VBA) Access VBAから使用したExcelプロセスを閉じる方法について 4 2022/06/08 17:50
- Excel(エクセル) エクセルのVBAについて とあるサイトのコードを参考に、CSVの文字化けを直すVBAを作成しているの 7 2022/11/04 14:15
- C言語・C++・C# pythonのファイルの並びでの読み込みとリストについて 4 2022/04/13 03:52
- LINE LINEアプリ内のQRコードリーダーがカメラのピントが合わず読み込めません。 2 2022/08/26 15:39
- その他(プログラミング・Web制作) Pythonを勉強しています。 5 2023/08/25 09:51
- Excel(エクセル) マクロでテキストファイルを読み込んだ際の最終セルにデータと改行が含まれる問題の改善方法 2 2022/03/25 16:50
- 大学受験 英語の勉強で読み込みをしています。その読み込む前に別のプリントに構文をふって、文全体がどのような構造 4 2022/07/31 21:10
- C言語・C++・C# C# で、あるフォルダー内にあるすべてのテキストファイルを別のフォルダーにコピーする。 4 2022/11/21 13:23
- その他(プログラミング・Web制作) HTMLを組み込むことができない言語 3 2022/05/21 10:05
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C言語での縦方向のファイル出力...
-
1行ずつではなくまとめてファイ...
-
出力をExcelにすることは可能??
-
C++ Builderでファイル出力した...
-
ファイルの文字コードをUTF-8に...
-
コマンド(例えばls)の出力結果...
-
AviUtlでAVI出力が途中までしか...
-
C言語で・・・・。
-
井戸型ポテンシャルの数値解シ...
-
VBA でメモ帳へ保存する際の保...
-
絶対パスをクリップボードへコピー
-
pLaTeX の EPSファイル読み込み...
-
ファイル出力の場所を指定
-
CADの無い環境の得意先に図面を...
-
ワードからPDF変換でグラフが表...
-
C言語での出力の上書き方法を教...
-
現状USB3.0が有用に使えるパー...
-
Wordマクロで指定したフォルダ...
-
ファイル比較について
-
C言語初心者の質問失礼します。
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
コマンド(例えばls)の出力結果...
-
Acccess レポートをグループ別...
-
VC++でUTF-8のファイルを出力し...
-
サウンド出力のデバイスを選択...
-
ファイルの文字コードをUTF-8に...
-
VBA でメモ帳へ保存する際の保...
-
ファイル出力の場所を指定
-
ファイル形式またはファイル拡...
-
テキストファイルに改行コード...
-
シェルコマンドの 2>&1 とはど...
-
Wordマクロで指定したフォルダ...
-
AccessVBA複数レポート条件毎に...
-
二次元配列をクリップボードに...
-
UNIX & Linux の標準出力で得た...
-
フォルダにあるPDF情報の抽出(VBA)
-
C++ BuilderでPDF出力
-
VBSでEXCEL⇒CSV変換で日付の書...
-
fortranのtxtファイル出力書式...
-
CBool関数について VB6とVB.net...
-
ワードからPDF変換でグラフが表...
おすすめ情報
>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
になっていました。
実際は漢字コードは新たに作るファイルにそっくりそのままコピーできればいいんです。
内容がどうでも構わない。
変換したいことは
1.ファイルの中のある範囲内で以下の文字を変換したい。
__6
の後の1行の文字列に従って
__8
の後の1行の文字列が変換できればいいのです。
2.その他の文字列は正確に1行1行正確にコピーできれば良い。
以上
_は実際は半角スペース 0x20です。