HSP3.2でCSVの読み込みを実装するサンプルコード
Hot Soup Processor 3で、CSVの読み込み機能を実装するためのサンプルです。
色々と調べた結果、HSP3.2ならば、strtrim関数が使えるため、割と楽にCSVが扱えることが判明。
ただし、改行を含む列がある場合は処理が出来ませんので、ご注意を。
処理出来ない例:"test", "te
st"
色々と調べた結果、HSP3.2ならば、strtrim関数が使えるため、割と楽にCSVが扱えることが判明。
ただし、改行を含む列がある場合は処理が出来ませんので、ご注意を。
処理出来ない例:"test", "te
st"
#include "hspda.as"
dialog "", 16, "" // ファイルの選択(CSVファイルを選択)
filename = refstr
sdim buf, 0xffff // ファイルの内容を格納
sdim _line, 0xfff // 1行分の文字列を格納
sdim tmp, 0xfff // 一時的に使用
len = 0 // 取得した行数
notesel buf // メモリノートパッドの初期化
noteload filename // ファイルの読み込み
sdim records, 0xfff, notemax // CSVの行数分メモリを確保
// メインループ
repeat notemax
noteget _line, cnt // 1行取得
// 1行分をメモリノートパッド形式でCSVに変換し、
// records.cntに保存
csvnote tmp, _line
records.cnt = tmp
len++ // 行数インクリメント
loop
// 表示テスト。records配列をrepeatで回し、strtrimで「"」をトリミングして表示
for i, 0, len, 1
mes "【" + (i + 1) + "行目】"
notesel records.i
repeat notemax
noteget _line, cnt
mes "" + (cnt + 1) + "列目:" + strtrim(_line, 0, '"')
loop
next
stop
dialog "", 16, "" // ファイルの選択(CSVファイルを選択)
filename = refstr
sdim buf, 0xffff // ファイルの内容を格納
sdim _line, 0xfff // 1行分の文字列を格納
sdim tmp, 0xfff // 一時的に使用
len = 0 // 取得した行数
notesel buf // メモリノートパッドの初期化
noteload filename // ファイルの読み込み
sdim records, 0xfff, notemax // CSVの行数分メモリを確保
// メインループ
repeat notemax
noteget _line, cnt // 1行取得
// 1行分をメモリノートパッド形式でCSVに変換し、
// records.cntに保存
csvnote tmp, _line
records.cnt = tmp
len++ // 行数インクリメント
loop
// 表示テスト。records配列をrepeatで回し、strtrimで「"」をトリミングして表示
for i, 0, len, 1
mes "【" + (i + 1) + "行目】"
notesel records.i
repeat notemax
noteget _line, cnt
mes "" + (cnt + 1) + "列目:" + strtrim(_line, 0, '"')
loop
next
stop
この記事の最終更新日:2017/10/28
最初に記事を書いた日:2009/12/31