改行マークの扱いについて


ピッコロ  2001-07-10 06:08:01  No: 74639

今,アウトルックエクスプレス上で打ち込んだテキスト(文字列)を暗号化するプログラムを組んでいます。手順としては,文字列の端からアスキーコードにして,それに数式を挟んで暗号化するものです。
  ところが,アウトルックエクスプレスは一行の文字列が長すぎると,強制的に目に見えない改行マークが入るようなのです。
  その改行マークが入ってくると,読み込む段階,あるいはコード変換する段階でエラーが出ます。こういった場合,どのような処理を挟めばいいのでしょうか?どなたかご教示くだされば幸いです。


Say  2001-07-11 15:58:50  No: 74640

一度どんなコードが追加になっているのか、バイナリエディタで調べたほうがいいでしょう。バイナリエディタは
http://www.vector.co.jp/vpack/filearea/win95/util/bin/edit/index.html
にひとやま転がってます。
通常の改行コードは16進で0D,0A(CR,LF)のはずです。
問題のコードがわかれば、バイナリでファイルオープンして、
1バイトずつリードし、(実際はバッファに一括リードして
1バイトずつ拾う)問題のコードをよみとばしながら
バイナリセーブすればOKです。
ただし、2バイト系文字コードの場合、2バイト目は
チェックからはずす必要があります。


ピッコロ  2001-07-13 04:52:06  No: 74641

さっそくの回答ありがとうございます。ご教示の通り,バイナリーエディタにてコードを調べてみました。教えて頂いたとおり0D0Aが入っていました。
  プログラムの中では,クリップボードに文字列(改行コードを含む)をコピーして,それを暗号化手順を組んでいます。こうした場合,どのようにして0D0Aをパスさせればいいのでしょう?いろいろとすみません。教えてください。


Say  2001-07-13 09:22:35  No: 74642

文字コードによってかわるのですが、ShiftJISの場合だと、
1.読み込み用と履き出し用にバイト配列バッファを用意
1.読み込みバッファに文字列を取得。取得する文字列が
  残ってなかったら履き出し用バッファのデータをフラッシュ
  しておわり
2.ポインタを0にセット
  読み込みバッファから1バイトリード
  リードするデータが残ってなかったら1.へ
3.リードしたデータがCRかLFだったら、ポインタを1つ
  すすめて2.へ
4.リードしたデータがShiftJIS1バイト目だったら
  今のデータと次のデータを履き出しバッファにストア。
  ポインタを2つすすめて2.へ
5.リードしたデータが3.4.以外のときは今のデータを
  履き出しバッファにストア。ポインタを1つすすめて2.へ  
  履き出しバッファがいっぱいになったら適宜フラッシュ。
  
おおざっぱに言うとこんなかんじです。
なんか、C向きのネタですね。
「ポインタ」とかきましたが、この場合、配列の添え字用の
整数です。


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

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






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