なでしこを明後日の方向に

日本語プログラム言語なでしこを応援しています

なでしこ3で変わった「保存」と「開く」系命令

保存・開く関連の命令がなでしこ1となでしこ3でかなり変わったのでまとめてみた。
なでしこ3のwnakoではパソコンに対して自由なファイルアクセスができない。

まとめ!

■なでしこ1
保存開く
 絶対パスで指定すると絶対パスのファイルにアクセス。
 相対パスで指定すると作業フォルダ(母艦パス)からの相対パスのファイルにアクセス。
 テキストファイル・バイナリファイルどっちも開ける。

■なでしこ3
保存開く(ローカルストレージ保存ローカルストレージ読む)
 wnakoではローカルストレージにアクセスする。
 引数はファイル名ではなく、キー(項目名)を指定する。
 文字数値、配列、辞書型の変数を保存し、開くで変数を復元できる。
  cnakoではパソコンに保存(なでしこ1と同じ?)

ファイル保存した時ファイル読んだ時
 webkit版のみ。 appidのフォルダにアクセスする。
 日本語のファイル名は化ける。

AJAX受信AJAX受信時
 引数にURLを指定するとデータ取得する。
 webkit版で相対パスを指定するとindex.htmlからの相対パスのファイルを開く

・wnakoは基本的にファイルの保存ができない
・ダウンロードという形でファイルを保存させることはできる

くわしく!

保存開く
なでしこ1で保存(開く)といえば、ファイルとして保存(開く)することだった。
なでしこ3(wnako)では保存(開く)がローカルストレージに変数を保存することになった。
正確にはJSON形式で保存するようだ。

ローカルストレージについて
ローカルストレージはブラウザの保存領域みたいなやつ。
ブラウザが変わると読み込めない、保存容量に制限がある、中身は容易に別プログラムから参照できる、などの難点がある。
使うとすれば、カーソル位置などの失ってもよい、価値のない情報になると思う。

JSONで保存されるので、配列や辞書型も保存できる。 ゲームのデバッグする時に変数を保存する先として便利かもしれない。

//辞書型の保存と取り出しが可能
A={"x":123,"y":456, "test":789}
Aコンソール表示 //→ {x: 123, y: 456, test: 789}
A「AAA」ローカルストレージ保存
「AAA」ローカルストレージ読む
Bそれ
Bコンソール表示 //→ {x: 123, y: 456, test: 789}
B"y"表示 //→456

ファイル保存した時・ファイル読んだ時のフォルダ

webkit版で追加された命令、ファイル保存した時ファイル読んだ時[ユーザーフォルダ]\.nadesiko3\[appid]\ファイル名 にファイルを保存できる。

webkit版のindex.jsonのなかに"appid" : ~~ と書いてある部分があり、そこでappidを指定できる。
ユーザー名がAdmin、appidがnadesiko3appだと C:\Users\Admin\.nadesiko3\nadesiko3app\ファイル名 みたいな感じ。

appid、ファイル名は日本語が入ると化けるので注意。

f:id:tkizzz:20211230145559p:plain
appidを「あれ」にして「あ.txt」へファイル保存した時

うちのパソコンではユーザーフォルダをDドライブに移しているため、D:\Users~になっている。

なでしこ1の変数「ユーザーホームフォルダ」(%userprofile%)がユーザーフォルダにあたるはずなんだけど、なでしこ1でユーザーホームフォルダを言うするとCドライブ、C:\Users~を返す。
ちょっとよくわからないです……

AJAX受信、AJAX受信時

引数にURLを指定すると、そのページに何かしら問い合わせて結果を取得する。
webkit版で相対パスを指定するとindex.htmlからの相対パスのファイルを開くことができる。

//index.htmlの横にあるindex.jsonを開く例
「index.json」AJAX受信した時
  対象言う
ここまで

なでしこ3からこのフォルダ(直下のフォルダ)に保存する方法はない(多分)
素材ファイル一覧などのよく差し替えするファイルをなでしこ1で作成して、なでしこ3からはAJAX受信で開くとよさそう。
なでしこ3で読む予定のファイルをなでしこ1で保存するときはUTF8N変換しておく必要があるのでそこだけ注意。