• ベストアンサー

ファイル内の(&H0A)を(&H0D0A)に変換したい

改行コードが0A(16進数)となってしまっているファイルを 0D0A(16進数)に変換したいのですが、どのような方法がありますか? 出来れば時間の掛からない方法が知りたいです。 ファイルは、ヤマト運輸の着店コードファイルで件数が3000件ほどあるのですが 改行コードが0AなのでInput#で読み込めません。 ファイルを変更しなくても良い方法があればそれでも結構です。

質問者が選んだベストアンサー

  • ベストアンサー
  • TAGOSAKU7
  • ベストアンサー率65% (276/422)
回答No.5

置き換えてファイルの保存をしたかったのですね・・・ それと、やはり読み込まない事には、置き換えれないですよ。 だって読んでないんだもん・・・ んで、置き換えで保存するのに一番早いのは#2に書いてあるようにまず 「GETで読む」 「Replace関数で置き換える」← 一度でファイル内の文字列を変換できます(VB6仕様) 「PUTでファイルに落とす」 これをファイルの数だけ繰り返す処理になると思います。 大まかにわけると、たった3つの処理で済みます。

taisuke555
質問者

お礼

回答ありがとうございます。 こんな簡単な方法があったとは・・・ Replaceって文字を繰り返す時に使うものだと思っていました。 もっと勉強しなくてはいけませんね。 これからもよろしくご教授願います。

その他の回答 (4)

回答No.4

一番簡単なのはFTPでしょう。Windows機を使用してFTPサーバにASCIIモードで送信した後、同様にASCIIモードでそのファイルを受信すれば変換されているはずです。

taisuke555
質問者

お礼

回答ありがとうございます。 No1の方と同じ内容になってしまいますので省略させていただきます。 説明不足ですみません。

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.3

昔懐かしいMS-BASICの頃を思い出します。VBで 次ぎのロジックはいかがですか。結構Basic時代の入出力関数がVBでも使えるようです。 a=input(50,1)でファイル番号1の50バイトをストリングaに読みこみます。 これだとCRが中身にあっても、50バイト読みこむと 思います。 ここでCRのストリングの位置のpバイト目をInstr関数で見つけ、 CRをCR+LFでおきかえる。(またはLFを加える。)1バイトより pバイトめまでとLFをbと言う文字列に作る。 そのbという文字列をprint #2,bでファイル番号2の アウトプットファイルに書き出す。 次ぎにaのP+1バイトより後のストリングで最初CRの位置を 見つけ同じ事を行う。aの中にCRが見つからなくなれば 50バイトまでを一時記録しておき、次ぎの50バイトの 先頭部分と結合しファイル番号2のアウトプットファイルに書く。 次ぎにa=input(50,1)を実行すると、61バイトから100バイト 目がaに入るので同じ事を行う。以下#1のファイルの終わりまで 繰り返す。 Instrである文字列を見つけるとき、その文字列の作り方は、 制御コードのCRやLFやCR+LFなどのときは、文字は 使えずc=chr(xx)+chr(yy)などのchr関数と+または &を使う。 下記はinput関数がVBでも使えるかテストしたもので、 作る時間がなくて、お尋ねの要求を満たすプログラム そのものでなくて済みません。 改行&H0Aはchr(10)なんですが,復帰はchr(32) だったと思いますが、手許に表がなくて未確認です。 InputとInputB関数があるかもしれませんので調べて 下さい。 文字列を扱う関数はInstr,Index,Substr、Mid,Right などである。 Private Sub Form_Load() c = Chr(10) & Chr(32) Open "c:\javasamples\test1.txt" For Input As #1 Open "c:\javasamples\testn.txt" For Output As #2 For i = 1 To 3 a = Input(50, 1) ' p = InStr(a, c) ' MsgBox p 'MsgBox Mid(a, 1, p) & "==" MsgBox a Next i a = Input(40, 1) MsgBox a End Sub

taisuke555
質問者

お礼

回答ありがとうございます。 No2の方と同じ内容になってしまいますので省略させていただきますが参考にさせていただきます。

  • TAGOSAKU7
  • ベストアンサー率65% (276/422)
回答No.2

http://oshiete1.goo.ne.jp/kotaeru.php3?q=169686 にも書いたのですが・・・それとほとんど変更なしのファイルの読み込みサンプルです。 読み込みを一行ずつ行わないで、バイナリ形式で全てを一度で読み、指定の区切り文字で配列にセットしてます。 改行コードが"OA"という文字列であればこれで可能なのですが。。。 いまいち質問の内容を理解しきれていない部分があります。 違ったらご指摘ください。 Sub Main()   'ファイル名   Const FILENAME As String = "c:\test.txt"      'テキストを配列で記憶   Dim valAry   As Variant     '問題ファイルの読み込み(ファイル名:改行文字:取得した文字列)   If Not subConvert(FILENAME, "0A", valAry) Then     Call MsgBox("[" & FILENAME & "]失敗")     GoTo PGMEND   End If PGMEND: End Sub 'テキストファイルを読み込み、配列にして返す 'パラメータ1:ファイルパス 'パラメータ2:テキストファイルは何区切り? 'パラメータ3:返す配列 Public Function subConvert(inFilePath As String, strCut As String, outAry As Variant) As Boolean   Dim lngFileSize As Long 'ファイルサイズ   Dim lngFileNum As Long 'ファイルナンバ     Dim strBuff   As String  '文字列ワーク     'ファイルサイズの取得   On Error Resume Next   lngFileSize = FileLen(inFilePath)   On Error GoTo 0   'サイズが取得できない時NG処理   If lngFileSize < 1 Then     Exit Function   End If     '取得するためのサイズを用意   strBuff = String(lngFileSize, vbNullChar)     'テキスト取得   lngFileNum = FreeFile   Open inFilePath For Binary As #lngFileNum     Get #lngFileNum, , strBuff   Close #lngFileNum     '文字列を区切り、配列に変換   outAry = Split(strBuff, strCut)     'OKを記す   subConvert = True End Function

参考URL:
http://oshiete1.goo.ne.jp/kotaeru.php3?q=169686
taisuke555
質問者

お礼

回答ありがとうございます。 参考にさせて頂きます。 やはり、1つずつ見ていくしかないのでしょうか? 私はNo3の方のような方法でLineInputで読込みInstrで検索しrightとLeftを使って挿入しファイルに書き込むという方法を考えていましたが、 No1の方のようにしかもプログラムの中で(出来ればファイルを読み込まず)一発置換をしたいと思って質問しました。 ちょっと虫のいい話でしたか・・・・ 皆さんの回答を見ても他アプリケーションを使用しないと一発では置換できない のでしょうか。

noname#5179
noname#5179
回答No.1

漢字コード変換ソフトがあります。 これで、CR+LFに変更すればいけると思います。

参考URL:
http://www3.airnet.ne.jp/saka/software/jme.html
taisuke555
質問者

お礼

早速の回答ありがとうございます このソフト簡単でいいんですが、実際に使うのは私ではないので プログラムの中で処理したいと思っています。 Windowsのワードパットで読込み、保存すると改行コードを変換して 保存してくれるのですが、他のソフトを使わず(プログラムの中で他の アプリケーションを使うのが面倒なので)プログラムで簡単な方法を 知りたかったのです。 質問がわかりにくくてすみません。 ただ、ヤマトのファイルがMacのTextファイルだという事がわかっただけでも 勉強になりました。

関連するQ&A

  • A D, D A 変換 実用

    変換速度やデジタルコードの観点から、A D, D A 変換が実用的に応用されている例って、何がありますか??

  • H8/3664FのA/D変換について

    H8/3664Fを使ってA/D変換した信号を配列に一時的に格納し,その後その信号を処理する プログラムを作成したのですが,A/D変換を行ってくれません。 いろいろ試した結果,配列を定義するとA/D変換を行ってくれないようです。 どなたかこの現象の原因と対策方法についてご存じないでしょうか。

  • A/D変換器についての質問

    こんにちは。 大学での授業で習ったA/D変換器の問題について質問です。 問1.入力電圧範囲が-5V~5Vまでの12ビットのA/D変換器で分解能は10/2^12=2.44mV 変換結果が10進数で256のときの入力電圧を逆算して求めよ。 解答 10進数で0から2^12=4096までの数字が-5Vから5Vまでの10V の範囲に対応する電圧は 10×256/4096-5=-4.375V・・・(1) 実際の入力電圧は-4.375V±0.00122Vの範囲 という答えなんですが(1)の部分の計算がどうしてそうなるのかわかりません。また±0.00122というのはどこから出てきたのでしょうか? 教えてください。 問2.入力電圧の範囲が0Vから4Vまである10ビットの逐次比較型A/D変換器について分解能は0.5Vである。 変換結果が2進数で0010111001であるとき、入力電圧の値を求めよ。 解答 与えられた2進数を10進数に直すと、185 4×185/1024=0.7226V・・・(2) となっていますが、問1の(1)の部分では‐5しているのに、なぜ問2では引かないのでしょうか?

  • a d 変換の精度について

    誤差率が±10%の抵抗を用いて実現可能なa d 変換回路のbit数ってどうなりますか? 1/2^3=0.125となるので3bitでしょうか?

  • MP3やm4aをWMAに変換してD903iで再生したい

    今までD902iを使用していて、D903iに機種変更しました。 ところが、m4a等はD903iで再生出来ない事が判り困っています。 m4aファイルやMP3ファイルは手元にあるのですが、これをD903iで再生出来るWMAに変換したいのですが、何かいい方法はご存知無いでしょうか? ちなみに、「dBpowerAMP Music Converter」というソフトを使ってm4aからWMAファイルを作成しましたが、うまくいきませんでした。

  • htmlファイルの改行について

    複数ある html ページから、改行部分( <BR> ではなくて )、を自動的に削除して再び保存する、というプログラムを自作しているのですが、\r\n, \r, \n に当てはまらない改行コード? があるみたいで、完全に取りきれないのです。 $input =~ s/\n\r//g; $input =~ s/\n//g; $input =~ s/\r//g; もしくは、 $input =~ s/\x0D\x0A|\x0D|\x0A//g; という具合にしているのですが、予想では、数行にわたるhtml タグから全ての改行が取り除かれ、一行にまとまると いうイメージがあるですが、ところどころ改行が残ります。何がいけないのでしょうか・・・

    • ベストアンサー
    • Perl
  • H83052 シリアル通信 A/D変換データ送信 について

    毎回の質問失礼します。 現在H83052マイコンを使用して、センサで得た電圧値を1ms間隔でA/D変換させるプログラムを作成しています。 マイコンのA/D変換機能と、ITUタイマ機能を用いて測定を行うまでのプログラムの作成は何とか完了しました。 ここで、測定終了後データをどのようにして表示したらいいのかというところでとまっています。 データはA/D変換データ(data[]←int型)、A/D変換時の時間データ(time[]←long型)が、測定プログラム実行時に200個ずつ配列に保存されています。 これをそのままシリアル通信機能を用いてPC側に表示させるようにしたいのです。シリアル通信のH8側からPCへの送信の場合TDRにデータを書き込みそれをTxDより送信すると思うのですが、実際にTDRのアドレスは1バイトですので、データとしては入りません。1バイトごと分けて送信するという方法になってくるのではないかと考えていますが・・・ また、送信する時のコードとしては、数字データもアスキーコードとして送信されてしまうことになるのでしょうか? どなたか、わかることやアドバイスがあれば、回答よろしくお願いします。

  • マイコンとD/A変換

    基本的な質問で申し訳ありません。 私は今SH7145マイコンを使っていて、I2Cで通信を行い、外部でD/A変換をしようとしてます。 そこで質問なんですが、マイコンとD/Aコンバータのクロック数?とか時間?とかの関係ってあるのでしょうか? どちらかが早いとダメだとか、どういった対応をしているのか・・・。 そういった事がよく分かってません・・・。

  • 文字コードの変換方法

    お世話になります。 サーバ上で生成した、文字コードがEUCのテキストファイルをSJISに文字コードを変換したいのですが、nkfコマンドが使用できません。 nkfコマンドを使用せず、EUC⇒SJISへ文字コードを変換する方法をご教示頂けますでしょうか。 また文字コードを変更すれば改行コードの変更はしなくてもいいのでしょうか。 宜しくお願い致します。

  • datファイルをACCESSへのインポートについて

    datファイル(固定長)をテキストに変換してからACCESSにインポートする、というやり方をした時、改行コードがなくサイズが大きいためか処理が中断してしまい、インポートできません。 ためしに件数を減らすと、インポートはできますが1レコードとして見えてしまうので、処理上都合が悪い状況です。 このようなデータをインポートするのに良いやり方があれば教えてください。 1ファイルあたりの最大サイズは、1000 * 800件です。 ACCESS2000を使用。

専門家に質問してみよう