DOSの改行コードを認識するには?


syou  2002-07-16 08:46:46  No: 75847

Line inputではDOSの改行コードは認識できないみたいなので、他の方法で認識する方法ってありますか?
やりたいことは、単純にファイルを一行単位で読み出してxlsファイルに書き込む操作だけです。
Line inputだと、全行を一行と認識してしまうためうまく貼り付けれません。どうかよろしくお願いいたします。


Say  2002-07-16 18:06:41  No: 75848

MS Windowsにおける改行コードはvbCrLf(&H0D,&H0A)で、
MS DOS時代から変更されていません。
とりあえずバイナリダンプして
改行コードに何が用いられているか
調べてみては」どうですか?


syou  2002-07-17 08:53:06  No: 75849

確かに0D0Aでした。で、VBで普通のテキストをバイナリに変換して改行コードがあるかどうかをチェックし、その改行コードを変換(0D0A→0A)にして元のテキストに戻すっていうのは可能なんでしょうか?


Say  2002-07-17 18:19:25  No: 75850

文字の検索ならInStr()
変換ならReplace()です。


syou  2002-07-19 23:37:46  No: 75851

こんな感じで作ってみたんですけど、vbCrLf(&HD, &HA)
でエラーが出るしGet #1, , strBufの時にはすでにバイナリではないし
どこがだめなんでしょうか??

Dim strBuf As String
  
Open "text.txt" For Binary As #1
    strBuf = Space$(LOF(1))
    Get #1, , strBuf
Close #1

s = InStr(strBuf, vbCrLf(&HD, &HA))      '検索
If s <> 0 Then
    strBuf = Replace(strBuf, vbCrLf(&HD, &HA), vbCrLf(&HA))  '変換
End If
        
Open "text2.txt" For Output As #1 Len = 32000
Print #1, strBuf


たかみちえ  URL  2002-07-20 00:53:25  No: 75852

んんん?
vbCrLfなんて関数ないですよ、
vbCrLfは、関数ではなく、定数で、改行コード(&HDと&HAの2文字)をあらわすものです。
なので、Replaceでおきかえる文字列には、vbCrLfを直接指定してください。


たかみちえ  URL  2002-07-20 00:55:37  No: 75853

あと、InStrは、Replace関数の中でも呼ばれている(と思う)ので、意味はないです。
直接Replace...を使っても、速度は変わらないです。


syou  2002-07-20 20:50:24  No: 75854

ではどうやってvbCrLfを使ってDOSの改行コードとUNIXの改行コードを分けるのでしょうか???


たかみちえ  URL  2002-07-21 02:41:27  No: 75855

Replaceのおきかえごの文字列には、vbLf…というものはないですから、
Chr(&HA)を指定してあげます。
おきかえ前の文字列については、前に書いた通り


たかみちえ  URL  2002-07-21 02:43:27  No: 75856

改行コードについて
http://tohoho.wakusei.ne.jp/www.htm
アラカルトの項にたしか、改行コードのことが書いてあったはず。
詳しく知っておくといいでしょう。


syou  2002-07-21 22:42:14  No: 75857

やっぱり無理です...
strBuf = Replace(strBuf, vbCrLf, Chr(&HA))
とやっても結果は全く変わりません。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加