- ベストアンサー
BASICのPRINT#命令で最終位置に化け文字がつく問題
- BASICのPRINT#命令で最終位置に化け文字がつく問題について解説します。
- 「PRINT #」を使ってファイルに書き出す際、最終のレコードを書き出した一番最後の位置に化け文字がついてしまう問題があります。
- この問題を解決するために、バイナリエディタによる内容の確認と「1A」という文字を除去する方法があります。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
putダメですか... ツールですが、テキストエディタではなくて 参考URLのようなユーティリティをBASIC上で DOSコマンドの呼び出しか、BASICを起動している バッチから呼び出せば良いかと思ったんですが。
その他の回答 (5)
- ftomo100
- ベストアンサー率41% (297/723)
PRINT #2,LEFT$(D128A$,128) 出力されるのはどう見てもレコードサイズ128バイトの固定長なんですが^^ ファイルサイズとレコードサイズの違いはOKですよね? もしくは、このプログラムはこのまますすめて 終了後に、別途にツールを起動して除去してはどうでしょう?
お礼
回答をいただきありがとうございます。 すみません言葉が足りなかったです。 書き出す時が固定長の128バイトであれば 全て書き出された後、最終的なファイルの長さが 固定でなくてよいと言う意味でしたか。(^^ゞ >終了後に、別途にツールを起動して除去しては >どうでしょう? 私、個人が使う場合は良いのですが、現場の人に テキストエディタを開いてそこを消していただくのは 厳しいです。
補足
PUT命令を使ってみましたが、やはり最後に同じものが ついてしまいます。 はまってしまいました・・・
- ftomo100
- ベストアンサー率41% (297/723)
んー、せっかくINCNTをカウントアップしているのだから PUT #2,INCNT,LEFT$(D128A$,128) では?
お礼
回答をありがとうございます。 ランダムファイルについて少し調べたのですが 固定長のファイルでファイルのように見えます もともと書き出すファイルが可変で、そのまま 使うのは難しい気がします。 勘違いで指摘してください。m(__)m
- okichan
- ベストアンサー率11% (4/36)
511 IF EOF(1)=-1 THEN 100 52 IF LEFT$(D128A$,1)="S" THEN PRINT #2,LEFT$(D128A$,128); の用にプリント命令のまえにエンドオブファイルの 分岐命令を入れては!
お礼
回答をありがとうございます。 >プリント命令のまえにエンドオブファイルの >分岐命令を入れては! と言いますと・・・・・ すみません、大変、厚かましいのですが もう少し教えていただけないでしょうか m(_ _)m
- bob_n
- ベストアンサー率35% (610/1732)
INPUT #の文の中にスペース、改行、および復帰文字は無視され、それ以外の最初の文字から、読み取られると書かれていました。 最初の文字が(")引用符であれば、引用符付きデータとして割り当てられると書かれていました。 見当違いの回答でしたらごめんなさい。すこしても、やくにたてばと書きました。
お礼
回答をありがとうございます。 読み取ったファイルのデータを表示して見て 特に問題はなかったので、書き出すときに自動で ついてしまうのかなと思いました。 なにか回避する方法があれば、、、 と言った所です。
- ftomo100
- ベストアンサー率41% (297/723)
1AはEOF(ファイルの終端を表す)なので、消す事はできないと思います。 シーケンシャルアクセスでなくて、ランダムアクセスで書き出してはどうでしょうか?
お礼
回答をありがとうございます。 ランダムファイルにしてしまうと、書き出した時の 並びが崩れてしまわないか心配です。 転送用のデータの組み立てなので、順番が崩れると 困ってしまいます。 もともと、使っていた転送ソフトが、古くて新しい ものに代えたら、以前よりも、データのチェックが 厳しくなり、困っています。 PRINT#以外でも使える命令があればと思います。
お礼
はやりBASICのみでは難しいですか。 フリーソフトも検討してみます。