Ticket #18585

CSV形式のデータファイルでコンマと文字列の間に空白が存在する場合に正常に動作しない場合がある

Open Date: 2009-09-08 14:16 Last Update: 2010-11-24 10:17

Reporter:
Owner:
Type:
Status:
Closed
Component:
(None)
MileStone:
(None)
Priority:
5 - Medium
Severity:
5 - Medium
Resolution:
Fixed
File:
None

Details

CSV形式のデータファイルで、カンマと文字列の間に空白が存在する場合には正常に動作しない場合がある。

例えば、以下のような不具合が生じる。

1.文字列の中にコンマが含まれている場合、例外が発生することがある。

 X値、Y値、Tick Label を渡してスカラー型XYグラフを描画しようとして、 下記の行が含まれているデータファイルを読み込ませると、例外が発生する。

  0.0,_0.1,_"a,""b"

 ここで、アンダースコアは半角空白を表している。

 Tick Label の表示内容に期待する結果は「a,"b」という文字列の表示である。

2.文字列を囲った二重引用符が存在する場合、文字列中に二重引用符が表示されてしまう。

 例えば、下記の行が含まれているデータファイルを読み込ませた場合に発生する。

  1.0,_0.5,_"abc"

 Tick Label の表示内容に期待する結果は「abc」という文字列の表示であるが、実際には 「"abc"」という文字列が表示されてしまう。

3.文字列中にコンマが存在する場合、「This data file is invalid.」という内容のエラーメッセージがダイアログで表示される。

 例えば、下記の行が含まれているデータファイルを読み込ませた場合に発生する。

  2.0,_1.5,_"a,b"

 Tick Label の表示内容に期待する結果は「a,b」という文字列の表示である。

尚、いずれの不具合も、コンマと次の文字列との間に空白が存在しない場合には発生しない。

Ticket History (3/3 Histories)

2009-09-08 14:16 Updated by: kuromaru
  • New Ticket "CSV形式のデータファイルでコンマと文字列の間に空白が存在する場合に正常に動作しない場合がある" created
2009-09-08 14:22 Updated by: kuromaru
  • Resolution Update from None to Fixed
Comment

CSV文字列を解析するクラス SGCVSTokenizer の中で、コンマの次に空白が存在する場合に、その空白が存在しないものとして処理を行っていたため、これらの不具合が発生していました。

それらの空白をスキップする処理を追加することで、いずれの不具合も修正されました。

修正したソースコードはCVSにコミット済みです。

2010-11-24 10:17 Updated by: kuromaru
  • Status Update from Open to Closed
  • Ticket Close date is changed to 2010-11-24 10:17
Comment

バージョン 2.0.0 のリリースに伴い close します。

Attachment File List

No attachments

Edit

You are not logged in. I you are not logged in, your comment will be treated as an anonymous post. » Login