動作環境
C++ Builder XE4
問題
設定の保存と読込を扱うライブラリを作って使用している。その設定については1項目に対して1つの設定(改行なし)としてこれまで使ってきた。
扱う設定項目に「改行付き文字列」を扱おうとしたところ破綻した。改行付き文字列をそのまま設定として書き込んだとき、改行が悪さをして、次回設定読込み時にパーサの処理の前のファイル読込みが失敗した。ファイル読込みが中途半端になったため、パーサ処理が失敗し異常終了するようになった。
対策案
改行付き文字列を設定として扱う場合の案
- 改行を禁止する
- 保存時: 入力した改行を置換して改行そのものをなくす
- 読込時: 保存した文字列そのまま読込む (改行はない)
- メールアドレスリストなどではこちらでもいいかも
- 改行を別の文字列として置換
- 保存時: 入力した改行を別の文字列に置換する
- 読込時: 保存した文字列に対して置換して改行を戻す
- 置換先の文字列をなににするか。入力文字列に含まれない文字列にしないといけない
- パーサーで改行を扱うようにする
- パーサーを通す前に設定をファイルなどから読むときが問題
- ファイル内で改行があると1セットの設定を読むときにN行の読込みをしないといけない
- 終端記号なりの工夫が必要となる
- 1セット1行の構造でなく、1セット1ファイルとした場合はこちらが使える