Inside KAG3/小技なども参照のこと。
CSV出力関係
convertCSVCell(text)
説明
- 機能
- 文字列をCSVファイルのセル(保存時のイメージ)に変換する
- 引数
- text…変換対象の文字列
- 戻り値
- セル文字列(保存時のイメージ)
- 備考
- ‐半角カンマが含まれている場合、ダブルクォーテーションで囲む
‐半角ダブルクォーテーションが含まれている場合、エスケープした上でダブルクォーテーションで囲む
ソースコード
function convertCSVCell(text) { var is_escape = false; if (text.indexOf('"') >= 0) { text = text.replace(/"/g, '""'); is_escape = true; } if (is_escape || text.indexOf(',')>=0) text = '"' + text + '"'; return text; }
convertCSVLine(arr)
説明
- 機能
- 配列の要素をCSVファイルの一行(保存時のイメージ)に変換する
- 引数
- arr…変換対象の配列
- 戻り値
- CSVファイルの一行(保存時のイメージ)ぶんの文字列
- 備考
- 内部でconvertCSVCell()を利用している
ソースコード
function convertCSVLine(arr) { var result = ""; if (arr.count > 0) { result += convertCSVCell(string arr[0]); for (var i = 1; i < arr.count; i++) result += "," + convertCSVCell(string arr[i]); } return result; }
convertCSVLine2(args*)
説明
- 機能
- convertCSVLine()のバリエーション。複数の引数をCSVファイルの一行(保存時のイメージ)に変換する
- 引数
- args*…変換対象の引数(任意の個数)
- 戻り値
- CSVファイルの一行(保存時のイメージ)ぶんの文字列
- 備考
- 内部でconvertCSVLine()を利用している
ソースコード
function convertCSVLine2(args*) { return convertCSVLine(args); }
サンプル
Debug.console.visible = Debug.controller.visible = true;
var arr = [30, 'A"B', "c,d", 5.1, true]; Debug.message( convertCSVLine(arr) ); Debug.message( convertCSVLine2(30, 'A"B', "c,d", 5.1, true) ); // どちらも 30,"A""B","c,d",5.1,1 という結果になる
getFName(path)
説明
- 機能
- ローカルファイル名からファイル名(拡張子なし)を抜き出す。splitLocalPath()の簡易版
- 引数
- path…ローカルファイル名(Storages.getLocalName()の戻り値など)
- 戻り値
- ファイル名(拡張子なし)
- 備考
- エラーチェックはしていないので注意
ソースコード
function getFName(path) { return /^(.*\\)?([[^\\\/:\?"<>\>]+)\..+$/.replace(path, function(arr){return arr[2]];}); }
サンプル
var path = "c:\\kirikiri_kag\\kag3\\MyProject\\bgimage\\教会.tlg"; var fname = getFName(path); // "教会"が返る
referBookMark(num)
説明
- 機能
- 指定した栞のゲーム変数を参照する
- 引数
- num…栞の番号
- 戻り値
- 正常終了…辞書配列オブジェクト
エラー終了…void - 備考
- ‐戻り値が不要になったら無効化することが望ましい
‐エラーチェックはしていないので注意
ソースコード
function referBookMark(num) { // 栞の番号numからファイル名を獲得 var fn = kag.getBookMarkFileNameAtNum(num);
// ファイルfnから栞を読み込む try { if (!Storages.isExistentStorage(fn)) // ファイルがない return void;
var modestr; if (kag.saveThumbnail) modestr += "o" + kag.calcThumbnailSize().size; // 指定オフセットからデータを読み込む
var data = Scripts.evalStorage(fn, modestr); if(data.id != kag.saveDataID) return void;
var result = data.user; result = %[] if result === void; return result; } catch(e) { return void; } }
サンプル
例えば、栞0のゲーム変数f.money、f.levelを参照するには、以下のように記述する。
; 栞0の全ゲーム変数を参照し、辞書配列に読み込む [eval exp="tf.dic = referBookMark(0)"] [if exp="tf.dic != void"] ; 栞0のゲーム変数f.moneyの値を一時変数tf.moneyに代入 [eval exp="tf.money = tf.dic.money"] ; 栞0のゲーム変数f.levelの値を一時変数tf.levelに代入 [eval exp="tf.level= tf.dic.level"] ; 辞書配列を無効化 [eval exp="invalidate tf.dic"] [endif]
splitLocalPath(path)
説明
- 機能
- ローカルファイル名からフォルダ、ファイル、拡張子を抜き出す
- 引数
- path…ローカルファイル名(Storages.getLocalName()の戻り値など)
- 戻り値
- キーdir、fname、extを有する辞書配列。それぞれの値にフォルダ、ファイル、拡張子が代入される
- 備考
- ‐戻り値が不要になったら無効化することが望ましい
‐エラーチェックはしていないので注意
ソースコード
function splitLocalPath(path) { var arr = /^(.*\\)?([^\\\/:\?"<>\|]+)(\..+)$/.match(path); var result = new Dictionary(); result.dir = arr[1]; result.fname = arr[2]; result.ext = arr[3]; invalidate arr; return result; }
サンプル
var path = "c:\\kirikiri_kag\\kag3\\MyProject\\bgimage\\教会.tlg"; var dic = splitLocalPath(path); // 以下の辞書配列が返る: // dic.dir = "c:\\kirikiri_kag\\kag3\\MyProject\\bgimage\\" // dic.fname = "教会" // dic.ext = ".tlg" invalidate dic;