FS.existsメソッドの使用方法を伝授させて欲しい
投稿者 : 豆乳初心者(maro-198-244.maro-v.jp)
- 2022/10/18(Tue) 10:01
No.14075
|
|
|
|
|
セーブデータをロードするのに使うFS.existsの使い方を教えてください。 2時間頭捻ってもエラーしか出ませんでした。
fs="save.txt"; bool=fs.exists();\\ここでエラーが発生する print(bool); \\trueかfalseが出るはずだった。
どこで使い方を間違えたのだろうか。 さっぱり分からない。
|
Re: FS.existsメソッドの使用方法を伝授させて欲しい
投稿者 : マッキー(p2634074-omed01.tokyo.ocn.ne.jp)
- 2022/10/18(Tue) 12:32
No.14076
|
|
|
|
fs="save.txt"; を fs=file("save.txt"); にすると動くと思います。
|
Re: FS.existsメソッドの使用方法を伝授させて欲しい
投稿者 : 豆乳初心者(kd106132103219.au-net.ne.jp)
- 2022/10/18(Tue) 17:54
No.14077
|
|
|
|
プロジェクトボードも見てるので、偉大なる先輩さんと同じマッキーさんなのかは分からないんですが。 少なくともその解答を見てTonyu system2のexistsメソッドを使ったことどころかリファレンスも見てないんだなということが分かりました。
existを和訳すると動詞で「存在する」という意味になります。 existsメソッドはそのファイルが存在するのかどうかを確認するためのメソッドらしいので、もし、マッキーさんの記述で使う場合はexistsを使う価値が0になります。
私はフォルダが存在しない場合を主に考えてexistsメソッドを使うつもりなので、この記述で書いても「そんなファイルはここにはないよ」的なエラーが出て使えないかと。 trueの場合はエラーが発生しないかもしれませんがね。
|
Re: FS.existsメソッドの使用方法を伝授させて欲しい
投稿者 : 豆乳初心者(kd106132103028.au-net.ne.jp)
- 2022/10/18(Tue) 19:04
No.14078
|
|
|
|
プロジェクトボードも見てるので、偉大なる先輩さんと同じマッキーさんなのかは分からないんですが。 少なくともその解答を見てTonyu system2のexistsメソッドを使ったことどころかリファレンスも見てないんだなということが分かりました。
existを和訳すると動詞で「存在する」という意味になります。 existsメソッドはそのファイルが存在するのかどうかを確認するためのメソッドらしいので、もし、マッキーさんの記述で使う場合はexistsを使う価値が0になります。
私はフォルダが存在しない場合を主に考えてexistsメソッドを使うつもりなので、この記述で書いても「そんなファイルはここにはないよ」的なエラーが出て使えないかと。 trueの場合はエラーが発生しないかもしれませんがね。
|
Re: FS.existsメソッドの使用方法を伝授させて欲しい
投稿者 : マッキー(p744016-ipngn8701hodogaya.kanagawa.ocn.ne.jp)
- 2022/10/18(Tue) 22:26
No.14079
|
|
|
|
単なる文法エラーかと思い、安易な回答をしてしまいました。 > セーブデータをロードするのに使うFS.existsの使い方を教えてください。 の部分を見落としていました。申し訳ありません。
おっしゃる通り、existsはファイルやフォルダ存在チェックするだけのメソッドなので、ファイルロードはできません。 ファイルロードはtextメソッドやobjメソッドで、引数無しにするとファイルロードになります。
//------------------------------- native parseInt; // JavaScriptのparseIntを使う x=123;y=234;text="テスト"; // x,y,textにデータを入れる
// ファイルセーブ fs=file("save.txt"); fs.text( x+"\n"+ y+"\n"+ text );
x=0;y=0;text=""; // x,y,textに別なデータを入れてみる
// ファイルロード fs=file("save.txt"); t=fs.text(); print(t);
// データ取り出し ary=t.split('\n'); // 改行コードを区切り文字として配列に分割 x=parseInt(ary[0]); // 文字列なので数値として使う場合、文字列→数値変換が必要 y=parseInt(ary[1]); // 文字列なので数値として使う場合、文字列→数値変換が必要 text=ary[2]; print(""); // 改行 print(x, y, text); // それぞれのデータ表示 //-------------------------------
ただ、textメソッドの場合はファイル全体に対して読み書きするため(おそらく1行ずつ読み書きはできなさそう)、 複数データをセーブする場合には、区切り文字を入れたりsplitを使ったり、数値は文字→数値変換が必要だったりするので、ちょっと不便かもしれません。 objメソッドを利用してオブジェクト(JSON形式)を読み書きする方が、扱いやすいかもしれません。
//------------------------------- x=123;y=234;text="テスト"; // x,y,textにデータを入れる
// ファイルセーブ fs=file("save.txt"); fs.obj{x, y, text}; // fs.obj({x:x, y:y, text:text});の省略形
x=0;y=0;text=""; // x,y,textに別なデータを入れてみる
// ファイルロード fs=file("save.txt"); o=fs.obj();
// データ取り出し x=o.x; y=o.y; text=o.text; print(""); // 改行 print(x, y, text); // それぞれのデータ表示 //-------------------------------
Tonyu2ダウンロード版にはSamplesにFileというプロジェクトがあり、 ファイルの扱い方の例があるので、参考になるかもしれません。 (サンプルにはフォルダの扱い方は無いようなので、ドキュメント参照や、わからなかったら再度質問等するといいと思います)
> この記述で書いても「そんなファイルはここにはないよ」的なエラーが出て使えないかと。 ちなみに、親スレッドのソース(fileを呼ぶように修正後)では、ファイル・フォルダがない場合falseが表示されますがエラーは発生しません。 fs=file("save.txt"); bool=fs.exists(); print(bool);
|
Re: FS.existsメソッドの使用方法を伝授させて欲しい
投稿者 : 豆乳初心者(maro-198-244.maro-v.jp)
- 2022/10/19(Wed) 12:54
No.14080
|
|
|
|
本物だったーっ!? 舐めた口聞いてすみませんしたーっ!
しかも、ただ解答するだけじゃなくて二手三手俺の知りたいことまで完璧に揃えて解答されてるー! サービスが良すぎるベテラン店員のごとき隙のない解答に驚きと感謝しか出てこない。
マジかマジかマジカルですか。 ありがとうございます。
|
|