投稿
けい kei0baisoku
HELPです!(><) 自動バージョン保存ツールを作ろうとしていたのですが、どうにも行き詰まっています。どなたか、何かご存知のことや気が付いた事がありましたら、助言を頂けると助かりますm(__)m ソースは写真の通りです。状況の詳細はコメントに書き込みます。
3そうだね
プレイ済み
返信[1]
親投稿
けい kei0baisoku
作ろうとしているのは以下の機能です。 「ファンクションキーの3番を押したら、スロット0のプログラムを上書きセーブした上で、過去のものとファイル名が被らないようにちょっと名前変えた上でBACKUPというフォルダにもコピーする」 バックアップフォルダ以下には、BASE64的なノリでHOGE_00、HOGE_01……HOGE_ZZ、と末尾に3文字だけ追加して毎回新規ファイルにするつもりです。 で、単独で手軽に使いたいのと、別フォルダに保存するにはPROJECT命令を使う必要があり、PROJECT命令はDIRECTモードでないと使えないので、写真のプログラムをKEYに登録しようとしています。
0そうだね
プレイ済み
返信[2]
親投稿
けい kei0baisoku
登録しようとして、KEYは128文字までしか登録できないと分かり、まず壁にぶち当たりました。写真のプログラムを128文字以下に収められれば解決するのですが、少し試して私には到底無理そうだったのでそれは断念しました。 次に「PROJECT命令だけ直接呼んで、ほかはファイルにしておきPRG3あたりにロード&RUN 3 するプログラム」をKEYに登録して試しました。 これはRUN 3の時点で行数不明のシンタックスエラーが出て、進捗はそこでストップ中です。
0そうだね
プレイ済み
返信[3]
親投稿
けい kei0baisoku
スマイルボタンかそこから呼び出されるランチャに登録したら解決するんだろうなとは気付いているのですが、極力単独でも使えるようにしておきたいので試行錯誤してます。 この方向で続けるなら多分シンタックスエラーを詳しくしらべることになると思いますが、やりたい事は気軽なバージョン管理ですので、それが実現できるなら方法はおよそ何でも良いです。 そもそもこれでいんじゃね、とか何か気付いたことなどありましたらお教えいただけると助かります。お願いいたしますm(__)m
0そうだね
プレイ済み
返信[4]
親投稿
ねこはち neko80001
短縮するとなると、通し番号の処理が問題になりそうですね~ 0~9を切り捨ててCHR$使ってみるとちっとは短くなるけれども、それでも128文字は遠いかあ…
0そうだね
プレイ済み
返信[5]
親投稿
けい kei0baisoku
>ねこはちさん ありがとうございます。 そうなんですよね。あと一歩なら有効そうなのですが一歩どころかまだ百歩くらいあって……… 一応ダメもとで、名前をアルファベットに限定して式を変えて変数名も全部一文字にして、とできることを詰め込んでみたのですが、それでもまだ128文字の倍以上はありました………
0そうだね
プレイ済み
返信[6]
親投稿
けい kei0baisoku
あ、すみません。試したけど書いてなかった事があったので追記します。 プログラム終了後も関数や変数が生きているのを利用して、バックアップの関数のDEFだけ先に通しておいて、KEYではそれを呼び出すだけ、というのも試したのですが、ほかのプログラムを実行したら定義が消えました……… ほかのプログラムを実行するまではうまくいきました。
0そうだね
プレイ済み
返信[7]
親投稿
ねこはち neko80001
今、自分もそれを試していましたが、やはり届きませんか… ファイル名取得も捨ててみてはどうでしょうか? プロジェクト内のたとえば、”EXE”がメインの実行ファイルだという統一ルールがないのが痛いところですが って、仕様がどんどん変わっちゃいますね…
0そうだね
プレイ済み
返信[8]
親投稿
ヒロブミ hirobumi-mmo
DIRECTモードでの関数呼び出しは現在のバージョンではバグが多く怖いので、自分は管理プログラムをSLOT3に押し込んでます。 さらにSLOT3のプログラムではボタン入力で処理を分岐させる事により ファイル管理に掛かる手間を減らしつつ機能も削らないようにしました。 そしてLOADというファイル名に LOAD "PRG0:作成中のプログラム LOAD "PRG1: LOAD "PRG2: LOAD "PRG3:管理プログラム としておく事により LOAD"を2度押してENTER,すぐにRUNですぐに管理プログラムを利用出来るようにしています。
1そうだね
プレイ済み
返信[9]
親投稿
ish owlis1
ご無沙汰しております。 DIRECTモードでは再現できない、スマイルボタン使用を回避すると、あとはソース自体の扱いに細工が妥当では、と。 単体駆動はヒロブミさんが提案されているので、別のアプローチを考えました。妥当性は、やや度外視です。 数週間前に「ソース先頭で自身ファイルsaveする」ことでsave漏れを防ごう という啓蒙がありました。 同様に「プログラムの先頭で、slot3に管理プログラムを読み込んで、バックアップを自動化する」というのは、どうでしょうか。 検証はしておらず申し訳ないのと、起動時、必ずダイアログが表示されるので、バックアップファイル名に日時等を振ってローテートとsave制御タイミングを考える必要が有る、かも。 ついでに、その他の画像等リソースはどうするんだ、と。
0そうだね
プレイ済み
返信[10]
親投稿
otta777 otta777a
2行目と23行目でプログラム実行中にカレントプロジェクトを 変更する部分を KEY 1,"PROJECT "+CHR$34)+"BACKUP"+CHR$(13) KEY 2,"CONT"+CHR$(13) ? "ファンクションキー1のつぎにファンクションキー2をおしてください” STOP としてDIRECTモードでプロジェクトを切り替えた後にCONTで再開して 貰う仕様にするのは問題ありますか?
0そうだね
プレイ済み
返信[11]
親投稿
けい kei0baisoku
>ねこはちさん ありがとうございます。ファイル名取得というのは、PRGNAME$(0)の事でしょうか? うーん、確かにそれだと保存対象は決めうちになっちゃいますね………。 使えるようになったら配布するのと、自分でも汎用的に使いたいので自動取得はちょっと捨てられそうにないです………
0そうだね
プレイ済み
返信[12]
親投稿
けい kei0baisoku
>ヒロブミさん ありがとうございます。LOAD"LOAD"は面白いですね!(^O^) ワンタッチに近いし使いやすそうです。本件とは別ですが、そのうち私も活用させていただくかも。 コメント拝見して、私はスロット3にロードしてからRUNしようとしていましたが、よく考えたらどうせスロットを一つ潰すなら、毎回上書きしようとするより最初だけロードして、あとはスロットに生きてること前提でKEYからRUNさせた方が安全ですね。 シンタックスエラーの件もありますが、これで行けそうならいくかも………(・ω・)
0そうだね
プレイ済み
返信[13]
親投稿
けいさんのプログラムを参考に僕なりに考えてみましたがこれが限界でした。 始めに別スロットに読み込んで、セーブ時にRUNしてKEYを書き換えて、そのKEYでセーブする2ステップ方式です。
0そうだね
プレイ済み
返信[14]
親投稿
けい kei0baisoku
>ishさん ご無沙汰してます。提案ありがとうございます! 開発中のソースにセーブ命令も組み込む方法の応用ですね(^O^) セーブ時にダイアログが出るのはもうやむを得ないので、十分良さそうです。 ただ、すみません。ちゃんと書くのを忘れていたのですが、完成したら配布もしようと思っていたのです………(><) 自分だけで使うならその方法を使わせて頂くと思います。 あと、画像とかは………諦めてます(^q^) 私自身作ってないのと、まあまずは需要ありそうなプログラムからかなと。
0そうだね
プレイ済み
返信[15]
親投稿
けい kei0baisoku
>otta777さん ありがとうございます。PROJECT命令だけ分離する方法ですね。なるほど。 行けそうな感じですが、すみません、ちゃんと書いてなかったのですが完成したら配布したいこともあり、SAVE以外のKEYをいじるのはなるべく避けたいところです。あとこれは個人的なこだわりにも近いのですが、操作UIは1ステップと2ステップとでは雲泥の差があると考えているので、少々プログラムの中で無茶をしてでも、ユーザがやる事は極力1つに抑えたいと考えています。2ステップ以上あると心理的な大変さ、面倒さが出てきて、使うのを敬遠し始める恐れがあるから、といった理由です。 とは言えご提案下さった方法なら案内も出て少なくとも戸惑う事はないので、どうしても1つにまとめられなかったら是非参考にさせて頂こうと思います。
0そうだね
プレイ済み
返信[16]
親投稿
けい kei0baisoku
あとすみません、もしかしたら私ちゃんと理解してないかもと思ったので念のため確認を。 KEY1とKEY2でやってることは、まとめようと思ったらKEY1の中で両方済ませられると思ったのですが、その理解であってますでしょうか? また、もとのプログラム自体KEY3とかに登録して呼び出す想定だと思いますが、そうするとKEY1の内容自体も、KEY3の中で一緒に済ませられそうという理解です。 ………ただ、私が最後にそれやろうとして原因不明のシンタックスエラーが出て止まっている訳ですけども………(-ω-)
0そうだね
プレイ済み
返信[17]
親投稿
命名規則を変えたのですが、2つのキーに収まりませんでした。 文字列変数が文字配列変数のように振る舞う機能(不具合?)を使うのは、少し、気になります。
0そうだね
プレイ済み
返信[18]
親投稿
けい kei0baisoku
>でんぺんさん ありがとうございます! おお!KEYの中で自分自身を二回書き換えてる感じでしょうか(°Д°) 面白いです!そして、見ただけだと挙動がイメージできない/(^O^)\ 今日、実際にやってみます。ユーザの手順は極力1つにしたいのですが、ダメでもここからなんとか頑張れるかも……… あと、知らない使い方もあって参考になりました。ありがとうございます。
0そうだね
プレイ済み
返信[19]
親投稿
僕のやり方も色々考えたんですが結局 1 他のスロットを使わない 2 ユーザーの操作を1回にする を達成することは出来なかったんですよねー…。 知らない使い方は僕もけいさんの文字列変数を配列のように使うやりかたやMID$で長さを無視(適当に長く入れる)などをしてなかったんで、なるほどと思いました。 コータさんの言うようにちょっと気にならなくもないですが(C言語的なので)、公式にOKならいいんですけどね。どうなのかなー。 ちなみにSHIFTは文字変数が文字配列として扱えるならSHIFT出来るんじゃないかなと思って試してみたら出来たって感じでした。
0そうだね
プレイ済み
返信[20]
親投稿
otta777 otta777a
>けいさん CONTはマルチステートメントを使うとエラーになってしまうため 単独でファンクションキー2に定義する必要がありますので あのような提案になりました。 往年のMicrosoft BASICならこの記述でも問題なんですが プチコンでは出来ない仕様のようです。
0そうだね
プレイ済み
返信[21]
親投稿
けい kei0baisoku
>コータさん ありがとうございます。 おおっ、すごい、大分短くなってる(°ω°) それでもまだこれだけあるので、やはり128文字は非現実的そうですね……… Base64的な命名は、ファイル名のサフィックス文字数を極力減らしたかったので最初に考えたのですが、冷静に考えたらそもそも実現が怪しくなった今だとそこまで優先度は高くなかったです。 文字列に対する[]もまずいですかねー(^^; 比較的一般的な文法なので、マニュアルにわざわざ書いてないだけかなと思ったのですが……… でも128文字に納めないなら少々長くなっても困らないので、わざわざ不安な書き方はしない方がいいですね。 ソートのやり方は思い付きませんでした。ありがとうございます。私のやり方だと二重ループなので、ファイル数が増えて負荷が爆発的に重くなるようなら必須な気がしました。
0そうだね
プレイ済み
返信[22]
親投稿
もやしもどき Pseudomoyashi
ギリギリ128文字に入りましたが、こんなのどうでしょうか? - バージョン番号を16進法2桁で、FFまで達するとそれ以降はFFを上書き - ファイル名の文字数なんかはチェックしていない - 手動でバックアップを削除して連番に空きができると、次の保存時にそこを埋める形になってしまう みたいな仕様になってしまいましたが、一応KEYに入れて動作はするようです。
1そうだね
プレイ済み
返信[23]
親投稿
けい kei0baisoku
>でんぺんさん むぅ、でんぺんさんでも操作一回に出来なかったのですか………頑張ろう(-ω-) 文字列の[]は割と早い時期に試して使えたので活用してました。私が特に気が付かなかったのは、別フォルダに対するFILES命令です。てっきり無理だと思ってましたので、活用したらもう少し工夫できそう………
0そうだね
プレイ済み
返信[24]
親投稿
もやしもどき Pseudomoyashi
すみません、画像の3行目のV=0は N=0のミスです。
0そうだね
プレイ済み
返信[25]
親投稿
けい kei0baisoku
>otta777さん なるほど。了解しました。自分で試していたらハマっていたかも。ありがとうございます。
0そうだね
プレイ済み
返信[26]
親投稿
1回に出来ないのは動作をまたぐと終了する命令が意外と多い?みたいなところですかねー。でもプロジェクト絡みだと使わざるを得ないみたいな…。 まあでも僕もこの辺のことはそんなに詳しくないので…。自分で使うことがあればさらに詳しく調べるところですが、現時点では今回のやり方を利用する予定はないですー。ただ色んな人のやり方で裏技というか正規の使い方じゃない(?)っぽいやり方を覚えられたので良かったです。
0そうだね
プレイ済み
返信[27]
親投稿
けい kei0baisoku
>もやしもどきさん すごい!!(°Д°) 機能もだいたい変えずに収まってる! 16進2桁は候補として考えてましたし削除したらそこから埋めるのはむしろ理想です。 文字数ノーチェックと、ファイル数が増えるとCHKFILEが重いことが分かっているので、そこだけ課題ですね……… すみません、これ、完成したら公開もしようと思っていたのですが、問題ないでしょうか? RUN併用方式なら皆さんの提案をいろいろ活用させて頂いてになると思うのですが、KEY完結方式でいくならもやしもどきさんの提案のソースとほぼイコールになる可能性が高そうです。
0そうだね
プレイ済み
返信[28]
親投稿
おお〜。短いのが来ましたね〜。 KEYに登録できればそれに越したことがない感じですしね。 今までの話とかで色々と方向性は見えてるような気もするし、あとはどうまとめていくかみたいな感じになりそうですね。 がんばってください〜。
0そうだね
プレイ済み
返信[29]
親投稿
もやしもどき Pseudomoyashi
構わないですよ。どうぞ使ってやって下さい。
0そうだね
プレイ済み
返信[30]
親投稿
けい kei0baisoku
>もやしもどきさん ありがとうございます!最終的にどうするかはいろいろ試した結果で決めるつもりですが、課題が解決できたら(もしくはまぁいいかと判断したら)使わせて頂くかもしれません。 頑張ります(`・ω・´) 今日中には終わりそうにないな………(´Д`)
0そうだね
プレイ済み
返信[31]
親投稿
ish owlis1
次は誰かがDIFFを作ってくれると....
1そうだね
プレイ済み
返信[32]
親投稿
けい kei0baisoku
>ishさん ですね!(^O^) ちなみに私は目下ゲーム制作中のため、思い付いて0.3秒で断念しました(`・ω・´)\
0そうだね
プレイ済み
返信[33]
親投稿
けい kei0baisoku
報告とお礼です。 もやしもどきさんの上げてくださったコードを元に、さらに縮めてファイル名チェックを入れるのも出来ましたので、これでアップしようと思います(^O^) CHKFILEの重さは、試しに100ファイル作ってみましたが旧DSでも2、3秒でしたので、実用に耐えうると判断しました。 アドバイスやご意見を下さった皆さん、本当にありがとうございました。 一応今は128文字以下に納めてのキー方式ですが、何かあったら修正・拡張出来ないので、別スロットに入れてrun方式もすぐやることになるかも………という気もしてます(´ω`) でもまずはゲーム完成させなきゃ………
0そうだね
プレイ済み
返信[34]
親投稿
もやしもどき Pseudomoyashi
もう数文字は縮められる余地があるとは思っていましたが、ファイル名チェックが入りましたか…脱帽です。 あと、最終的なコードと自分のコードを見比べて気付きましたが、私のはループの継続条件を間違ってましたね。お恥ずかしい。
0そうだね
プレイ済み
返信[35]
親投稿
けい kei0baisoku
>もやしもどきさん とんでもないです(^O^) 伝わりやすいかと思って一応、元々はKEYに入れようとしていた事も書きましたが、まさか機能をほとんど変えずに実現出来るとは思っていなかったので驚嘆いたしました。ありがとうございます。 文字数短縮は、本当に手段を選ばず実現したので見る人が見たら怒られそうな気もしています………(´з`)
0そうだね
プレイ済み
返信[36]
親投稿
ish owlis1
キー方式で問題解決したようで何よりです。 別スロット方式の採用も視野に入れますか。 ふと、別スロット方式であれば、 「コメントにバージョン管理情報を埋め込めば、開発プログラムとバージョン管理情報が分離できて嬉しいかも」と思いついてしまった。 ‘バックアップ設定はソースの先頭コメントとかルール決める ‘@text:test.prg ‘@grp:test.grp EXEC “PRG3:BK" 'ここから開発プログラム ACLS:… 決め事が多いと窮屈で、プチコンのカラーではないですね。
0そうだね
プレイ済み
返信[37]
親投稿
けい kei0baisoku
>ishさん プログラム内に管理情報埋め込みですか。なかなか面白そうですね。 個人個人やりたい事が全然違いそうなので汎用的に使えるものにしようと思うとハードルが高そうですが………
0そうだね
プレイ済み