[リストへもどる]
一括表示

投稿時間:2003/03/09(Sun) 15:07
投稿者名:kaori
URL :
タイトル:
テキストファイルの改行コードについて
VBで作成したテキストファイルをUNIX上のシェルで読み込んで、記述されている名前のファイルを
作成しようと思っているのですが、行の最後に改行コードが入っている為、最後の項目のファイル名が改行コードを含んものになってしまいます。(当たり前と言えば当たり前なのですが。。。)
何とか改行コードを入れずにテキストファイルに複数行書き込む事はVBではできないでしょうか。
この場合はUNIX上のシェルで改行コードを読まないようにするしかないのでしょうか。

変な質問かもしれませんが、どなたかアドバイスお願いします。
(無理であればそれだけでも。)

例:(^Mが改行コード)
AAA,BBB,CCC,DDD,EEE^M
FFF,GGG,HHH,III,JJJ^M

ファイル名→AAA.txt、・・・、EEE^M.txt

投稿時間:2003/03/09(Sun) 15:30
投稿者名:takk
Eメール:
URL :
タイトル:
Re: テキストファイルの改行コードについて
UNIXの改行コードはLF、それに対しWindowsの改行コードはCR + LFです。
なのでテキストファイルを作成する時に改行コードとしてvbLfのみを指定してあげればいいと思います。

投稿時間:2003/03/09(Sun) 15:36
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re: テキストファイルの改行コードについて
VB6.0 以降なら Replace関数で検索置換えができます。
ここのVB簡易レファレンス参照

投稿時間:2003/03/09(Sun) 15:36
投稿者名:魔界の仮面弁士
Eメール:
URL :
タイトル:
Re: テキストファイルの改行コードについて
相手側は、何を改行コードとみなしているのか?
現在は、どのような方法でテキストファイルを生成しているのか?
それによって回答は変わってくるでしょう。

とりあえず今回は、Print#ステートメントによる出力だと仮定して回答します。

> 何とか改行コードを入れずにテキストファイルに複数行書き込む事はVBではできないでしょうか。
複数行のデータを出力させようとしているのに、
改行コードは含めない……というのは、何か矛盾していませんか?(^^;)

とりあえず、Windowsでの改行は、通常、「CRLF」ですから、
  Print #FNo, "AAA,BBB,CCC,DDD,EEE"
  Print #FNo, "FFF,GGG,HHH,III,JJJ"
という出力は、
  (\rが改行[CR]、\nが復帰[LF])
  AAA,BBB,CCC,DDD,EEE\r\nFFF,GGG,HHH,III,JJJ\r\n
という結果を生む事になります。

ですから、もし、Unix側が「LF改行」の設定になっているのであれば、
> 例:(^Mが改行コード)
> AAA,BBB,CCC,DDD,EEE^M
> FFF,GGG,HHH,III,JJJ^M
のように見えてしまうかもしれませんね。
Unix側がCR改行なのか、LF改行なのか、CRLF改行なのかを調べておいてください。
(多分、LF改行だとは思いますけれど)

で。改行の出力を抑制したいのであれば、
  Print #FNo, "AAA,BBB,CCC,DDD,EEE";
  Print #FNo, "FFF,GGG,HHH,III,JJJ";
のように、最後にセミコロンを付加すればOKです。
ただしこれでは、CRもLFも送られませんから、必要に応じて、
  Print #FNo, "AAA,BBB,CCC,DDD,EEE"vbLf;
  Print #FNo, "FFF,GGG,HHH,III,JJJ"vbLf;
のように、自分で改行コードを送出してやる必要があります。


あるいは、改行コードを任意に選択できるようなオブジェクトを使うことです。

例えば、ADOのStreamオブジェクトは、LineSeparatorプロパティを使うことで、
改行コードを CR、LF、CRLF の3種から選択する事ができるようになっています。
http://www.microsoft.com/japan/msdn/library/ja/jpado260/htm/mdobjstream.asp

投稿時間:2003/03/09(Sun) 20:20
投稿者名:kaori
URL :
タイトル:
Re^2: テキストファイルの改行コードについて
みなさん、ご返信ありがとうございます。
ご返信が素早くて驚いています。

私がやろうとしているのは、魔界の仮面弁士さんのご返信の通り、
Print#ステートメントによる出力です。

> 複数行のデータを出力させようとしているのに、
> 改行コードは含めない……というのは、何か矛盾していませんか?(^^;)

そうですよね。矛盾してますよね。それで変な質問かなあと自分で思ってしまいました。

> で。改行の出力を抑制したいのであれば、
>   Print #FNo, "AAA,BBB,CCC,DDD,EEE";
>   Print #FNo, "FFF,GGG,HHH,III,JJJ";
> のように、最後にセミコロンを付加すればOKです。
> ただしこれでは、CRもLFも送られませんから、必要に応じて、
>   Print #FNo, "AAA,BBB,CCC,DDD,EEE"vbLf;
>   Print #FNo, "FFF,GGG,HHH,III,JJJ"vbLf;
> のように、自分で改行コードを送出してやる必要があります。

私のやりたい事は上記の魔界の仮面弁士さんのご返信ようにすればできそうです。
今日は自宅なので、VBが使えないので、明日会社で試してみたいと思います。
ありがとうございました。