hinekure.net が http://hspdev-wiki.net/ から自動クローリングした結果を表示しています。画像やリソースなどのリンクが切れています。予めご了承ください。
String/CSV形式データの読み込み - HSP開発wiki
トップ    編集凍結 差分バックアップ添付複製名前変更リロード   新規一覧単語検索最終更新   最終更新のRSS

String

csvstr

HSP標準のプラグインhspdaに搭載されている命令です。
便利なのですが、若干不安定との報告が上がっています。
また、文字列中に「,(カンマ)」や改行が使えないなど不便な部分もあります。
このためExcelで作成したCSVファイルが正常に読み込めない場合があります。

CSV形式について

様々な亜種が存在します。
(詳細はwikiのComma-Separated ValuescodezineのCSVファイルフォーマットなどを参照して下さい。)

基本的な方式
数値:""で囲まず,で区切ります。 例)1,2,3
文字列:""で囲みます。 例)"文","字","列"

文字列の中の"は、"""に変換します。~ 例)サンプルの"文字列"です -> "サンプルの"""文字列"""です"
"を""に変換する場合もあるようです。
一部のソフトでは、\"に変換されるようです。

文字列の中にダブルクォート(")、カンマ(,)、制御文字(<CR>、<LF>など)が存在しない場合は、
""で囲まなくても良いようです。

自作csvstrモジュール

 ということで自作モジュールを掲載。
Excelで作成したCSVファイルを読み込むためのモジュールなので、少し複雑になっています。
ただのカンマ区切りのデータならもっとシンプルに出来るのですが…。
そのかわり、データ内にカンマや改行、ダブルクォーテーションが含まれていても正常に読み込むことが出来ます。
csvstr2でcsvデータを配列に読み込み。cell2strでHSPでセル内のデータを通常扱う形式に変換します。

結構適当に作ってますので問題あったら修正してください。

hsp3.png

+  自作csvstrモジュールサンプル


 より早い命令に置き換えたりして、若干高速化したモジュールを作ってみました。
沢山のデータを扱う場合に使えるかも。
(差し替えできない様なのでファイル名に適当な数値をくっ付けてアップしました、
 末尾の数字を取り除いたりしてお使いください)

+  mod_csv_20120219.hsp


ついでにヘルプファイルも作ってみました。
仕様は同じなので、どちらのモジュールにもお使いいただけます。
(こちらも末尾の数字を取り除いたりしてお使いください)
filemod_csv_20120219.hs

コメント

  • 文字列関係の記事だったんでここに置いたのですがよかったでしょうか。なにかカテゴリを新たに作るべきだったかな? -- GENKI? 2006-07-13 (木) 21:13:46
  • ちかごろ本家掲示板でcsvstrの記事がおおいようなので、hsファイル作るときに作ったてたのをupしました。公開する気なかったから適当…。バグや効率upの方法が見つかったら適当に修正してください。 -- GENKI? 2006-07-13 (木) 21:16:35
  • ちょっと必要があって見直してみたら、使い方の説明がまったくなかったので追記しました。ついでにサンプルも追加。 -- GENKI? 2008-09-08 (月) 22:45:17
  • CSV形式の説明を追加してみました。CSVは亜種の処理まで考えると大変なので、使う形式専用で組んだほうが楽な気がします。
    ,で区切られたテキストを分割する場合は、(csvstrだと、要素をいくつ取り出したか分からないので、)getstrやinstr + strmidの方が使いやすい気がします。
    \"の処理は、"の位置を探して、その1個前の文字を見た方が楽かも。 -- つくね? 2008-11-13 (木) 23:54:36
  • 追加説明ありがとうございます。CSVには方言があったんですね。仕様をあまり調べずにエクセルの出力結果を参考に作ってました。 [worried2] ここのスクリが亜種用のスクリプトを組むときの参考になれば幸いです。 -- GENKI? 2008-11-14 (金) 21:08:10
  • 機会が有ってモジュールを少し改造してみました。自分の理解用に無駄なコメントいっぱい入ってて見辛いですが、変なとこあったらツッコミお願いします(^^); 。 -- osakana 2009-12-22 (火) 04:27:59
  • 1つ気になった部分があるのですが、オリジナルの方の csvstr2命令の中で、改行を処理している部分(行数で言うと110行目)の if stra = "\n"...の処理がうまく機能していない見たいなのですが、これはどういう処理とするのが正しいのでしょうか?見た目では改行を区切り文字として扱う感じですが合ってますか?。勝手に修正しようと思ったのですが、どう直すのが正しいのかイマイチ自信が持てなかったので。 -- osakana 2010-01-08 (金) 04:13:32
  • 見直してみたんですが、何をしたいのかさっぱりな処理ですね。コメントもよくわからないし。誰だよこんなの作ったの…ってすみません私です。orz そもそもstrmidで1文字しか取り出してないのに\nと比較て…なんと意味のないことを。*1それにどの分岐でもscln++するなら最初にしとけばいいのに…。何やってたんだか。w
    おそらく「,」と同じ扱いになっていることから、おっしゃるとおり区切り文字として認識させようとしていたようです。(なぜそういうふうにしようと思ったのかわかりませんが。)しかし本家csvstrでは「1行だけのデータ」を使うとなっているので、改行は区切りにするべきではなくデータ終了とみなして切り捨てるか、そのまま文字として扱ったほうがいいと思います。  ご迷惑おかけします。 -- GENKI? 2010-01-10 (日) 02:53:37
  • いえいえこちらこそ(^^;)。取りあえず改行の処理は、先頭がダブルクォートなら文字として扱い、そうで無ければ処理終了というふうにして見ました。変な動作しないか心配ですが・・・。 -- osakana 2010-01-17 (日) 19:43:32
  • あとヘルプファイルに csvstr2 の戻り値について書くのを忘れていたのでそちらも一緒に更新しました。 [ojigi] -- osakana 2010-01-17 (日) 19:50:56
  • 何度もすみません [tere] 一箇所ミスが有ったので修正しました。これで大丈夫なはず。。。 -- osakana 2010-01-19 (火) 20:59:06
  • 前の変更によって、135行目からのコメントが、実際の状態と食い違ってしまっていたので修正しました。スクリプト自体はそのままです [ojigi] -- osakana 2010-03-09 (火) 23:21:27
  • 若干高速化モジュールとヘルプファイルを更新しました。前バージョンのモジュールは不具合があるので使用している方は申し訳ございませんが修正版に差し替えてお使いください。 -- osakana 2012-02-19 (日) 23:27:41
  • あと、ファイル名を間違えてるのに気づかずアップロードしてしまったファイルがありますが、無視してください。(mod_csv_20120219hsp.hsp←アップミスですすみません。。。) -- osakana 2012-02-19 (日) 23:33:24

URL B I U SIZE Black Maroon Green Olive Navy Purple Teal Gray Silver Red Lime Yellow Blue Fuchsia Aqua White

*1 \nは2文字。13,10
トップ    編集凍結 差分バックアップ添付複製名前変更リロード   新規一覧単語検索最終更新   最終更新のRSS
Last-modified: 2012-02-20 (月) 09:39:08 (657d)