{---プログラム掲示板投稿フォーム--- 【ソフト名】ポケットモンバータ (バージョン 1.00) 【作 成 者】kobachi (連絡先:kobachi@po4.across.or.jp) 【種 別】フリーソフトウェア 【ひまわりのバージョン】ver.1.55a 【転 載】可(転載条件:作者にメールで連絡すること) 【改変運用】可(暗号辞書を書き換えてご自由にご利用ください) 【ひまわり本体への梱包】可 【実行時に利用作成するファイル】有(pkmnvert.ini) 【コメント】
プレーンテキストを、いわゆるピカチュウ語に変換します。
暗号ルーチンと暗号化辞書が単純なので、処理速度が遅い、ファイルサイズが48倍(最大で96倍)に膨らむ等、非常に多くの問題を含んでいますが、ピカチュウ語への変換とピカチュウ語から通常の文章への復号化、そして、パスワードで保護することも出来ます。
もっと高度な暗号ルーチンを制作した方は、ぜひ掲示板で公開してください。私は、ためらわずそちらを利用します。尚、ピカチュウ語は「物」ではなく、また固定した作品でもないので、著作権には一切抵触しません。安心してご利用ください。
追伸:夏休みの季節になって、これから投稿が増えるとなると非常に楽しみですが、近い将来、「夏休みの自由研究は、コンピュータの処理速度の研究」とか、「夏休みの自由工作はシューティングゲーム」といったことになるのでしょうか?そう考えると、末恐ろしい気もします。
---投稿フォームここまで---}
*諸変数の定義 暗号辞書は、「」& 「ピッカピカチュー\nピッカピーカチュ\nピーカピカチュー\nピーカピーカチュ\n」& 「ピカッピカチュー\nピカッピーカチュ\nピカーピカチュー\nピカーピーカチュ\n」& 「ピカピピカチュー\nピカピピーカチュ」。 処理ファイルは、「無題」。 処理ファイル名は、「無題」。 文字書体は、「MS UI Gothic」。 文字サイズは、9。
*母艦の設定 母艦の、タイトルは、「ポケットモンバータ - {処理ファイル名}」。 ファイルポケットモンバータの終了に、終了処理設定。
*メニューの生成 ファイルメニューを、メニュー作成。 その、テキストは、「ファイル(&F)」。 ファイルメニューに、新規メニューを、メニュー追加。 その、テキストは、「新規(&N)」。 その、ショートカットキーは、「Ctrl+N」。 その、イベントは、ファイル新規。 ファイルメニューに、開くメニューを、メニュー追加。 その、テキストは、「開く(&O)」。 その、ショートカットキーは、「Ctrl+O」。 その、イベントは、ファイル開く。 ファイルメニューに、上書き保存メニューを、メニュー追加。 その、テキストは、「上書き保存(&S)」。 その、ショートカットキーは、「Ctrl+S」。 その、イベントは、ファイル上書き保存。 ファイルメニューに、名前をつけて保存メニューを、メニュー追加。 その、テキストは、「名前をつけて保存(&A)...」。 その、イベントは、ファイル名前をつけて保存。 ファイルメニューに、区切り線1を、メニュー追加。 その、テキストは、「-」。 ファイルメニューに、クリップボードから開くメニューを、メニュー追加。 その、テキストは、「クリップボードから開く(&V)」。 その、ショートカットキーは、「Ctrl+V」。 その、イベントは、ファイルクリップボードから開く。 ファイルメニューに、クリップボードに保存メニューを、メニュー追加。 その、テキストは、「クリップボードに保存(&C)」。 その、ショートカットキーは、「Ctrl+C」。 その、イベントは、ファイルクリップボードに保存。 ファイルメニューに、区切り線2を、メニュー追加。 その、テキストは、「-」。 ファイルメニューに、ポケットモンバータの終了メニューを、メニュー追加。 その、テキストは、「ポケットモンバータの終了(&X)」。 その、イベントは、ファイルポケットモンバータの終了。 コンバートメニューを、メニュー作成。 その、テキストは、「コンバート(&C)」。 コンバートメニューに、変換開始メニューを、メニュー追加。 その、テキストは、「変換開始(&P)」。 その、ショートカットキーは、「Ctrl+P」。 その、イベントは、コンバート変換開始。 コンバートメニューに、復元開始メニューを、メニュー追加。 その、テキストは、「復元開始(&U)」。 その、ショートカットキーは、「Ctrl+U」。 その、イベントは、コンバート復元開始。 コンバートメニューに、区切り線3を、メニュー追加。 その、テキストは、「-」。 コンバートメニューに、パスワード使用メニューを、メニュー追加。 その、テキストは、「パスワード使用(&E)」。 その、イベントは、コンバートパスワード使用。 書式メニューを、メニュー作成。 その、テキストは、「書式(&O)」。 書式メニューに、右端で折り返すメニューを、メニュー追加。 その、テキストは、「右端で折り返す(&W)」。 その、イベントは、書式右端で折り返す。 書式メニューに、フォントメニューを、メニュー追加。 その、テキストは、「フォント(&F)...」。 その、イベントは、書式フォント。 ヘルプメニューを、メニュー作成。 その、テキストは、「ヘルプ(&H)」。 ヘルプメニューに、バージョン情報メニューを、メニュー追加。 その、テキストは、「バージョン情報(&A)」。 その、イベントは、ヘルプバージョン情報。
*オブジェクトの生成 エディタを、メモとして、作成。
*設定の読み込み 「{母艦のパス}pkmnvert.ini」が、存在するか。 もし、それが、はいなら、( バッファに、「{母艦のパス}pkmnvert.ini」を、読む。 6回、( 「{バッファ#回数}」の、「=」を、「\n」に、置換。 回数で、条件分岐。 1の時、母艦の、Xは、それ#1。 2の時、母艦の、Yは、それ#1。 3の時、母艦の、幅は、それ#1。 4の時、母艦の、高さは、それ#1。 5の時、( もし、それ#1が、1なら、( エディタの、スクロールバーは、縦。 右端で折り返すメニューの、値は、オン。 ) ) 6の時、エディタの、フォント書体は、それ#1。 ) )
*ソフトの初期化 母艦の、変更した時は、オブジェクトのリサイズ。 母艦浮上して、待機。
*ファイル新規 //各種データの初期化 エディタの、テキストは、「」。 処理ファイルは、「無題」。 処理ファイル名は、「無題」。 母艦の、タイトルは、「ポケットモンバータ - {処理ファイル名}」。 戻る。
*ファイル開く 「テキスト文書(*.txt)|*.txt|非バイナリファイル(*.*)|*.*」の、読み込みファイル選択。 もし、それが、「」でなければ、( 処理ファイルは、それ。 バッファに、処理ファイルを、読む。 エディタの、テキストは、バッファ。 //表示用にファイル名を切り出す 処理ファイルから、ファイル名を切り出す。 処理ファイル名は、それ。 母艦の、タイトルは、「ポケットモンバータ - {処理ファイル名}」。 ) 戻る。
*ファイル上書き保存 もし、処理ファイルが、「無題」なら、ファイル名前を付けて保存に、飛ぶ。 でなければ、( エディタの、テキストを、バッファに、得る。 バッファを、処理ファイルへ、保存。 ) 戻る。
*ファイル名前をつけて保存 「テキスト文書(*.txt)|*.txt|全てのファイル(*.*)|*.*」の、書き込みファイル選択。 もし、それが、「」でなければ、( 処理ファイルは、それ。 エディタの、テキストを、バッファに、得る。 バッファを、処理ファイルへ、保存。 //表示用にファイル名を切り出す 処理ファイルから、ファイル名を切り出す。 処理ファイル名は、それ。 母艦の、タイトルは、「ポケットモンバータ - {処理ファイル名}」。 ) 戻る。
*ファイルクリップボードから開く バッファに、クリップボードを、読む。 エディタの、テキストは、バッファ。 戻る。
*ファイルクリップボードに保存 エディタの、テキストを、バッファに、得る。 バッファを、クリップボードへ、保存。 戻る。
*ファイルポケットモンバータの終了 //設定ファイルの更新 「[ポケットモンバータ] WinPosX={(母艦の、X)} WinPosY={(母艦の、Y)} WinWidth={(母艦の、幅)} WinHeight={(母艦の、高さ)} VScroll={(右端で折り返すメニューの、値)} ViewFont={エディタの、フォント書体}」を、「{母艦のパス}pkmnvert.ini」に、保存。 終わり。
*コンバート変換開始 //変換対象文字列の取得 エディタの、テキストを、バッファに、得る。 暗号バッファは、「」。 スライド量は、0。 //パスワードが必要かどうかを判定 パスワード使用メニューの、値を、それに、得る。 もし、それが、オンなら、( 「4桁の数字でパスワードを、入力してください。」と、尋ねる。 もし、それが、「」なら、スライド量は、0。 でなければ、( スライド量は、それ。 スライド量が、数列か。 もし、それが、はいなら、( //スライド量が数値だった場合 スライド量は、INT(スライド量)。 //スライド量が4桁以上の場合 もし、スライド量が、10000以上なら、スライド量は、9999。 ) でなければ、( //スライド量が数値ではなかった場合 スライド量は、9999。 ) ) //パスワードヘッダを設定 暗号バッファは、「ピカピーカピカピ」。 ) //処理回数の取得 バッファの、文字数。 バッファ長は、それ。 バッファ長回、( 母艦の、タイトルは、「変換中({INT(回数/バッファ長*100)}% 完了)...」。 もし、バッファが、「」でなければ、( バッファから、1文字、左端を切り取る。 それの、キーコード。 それで、条件分岐。 10の時、( //なにもしない ) 13の時、( //改行 暗号バッファは、暗号バッファ&「\n」。 ) その他の時、( //暗号化処理 一次バッファ=それ+スライド量。 //ピカチュウ語に置換 一次バッファを、6桁の、ゼロで埋める。 暗号バッファは、暗号バッファ&それ。 ) ) ) //文字コードの羅列を別の文字列に置換 母艦の、タイトルは、「変換終了中...」。 それは、暗号バッファ。 10回、「{回数-1}」を、「{暗号辞書#(回数-1)}」に、置換。 暗号バッファは、それ。 //表示の更新 エディタの、テキストは、暗号バッファ。 母艦の、タイトルは、「ポケットモンバータ - {処理ファイル名}」。 戻る。
*コンバート復元開始 //復元対象文字列の取得 エディタの、テキストを、バッファに、得る。 復号バッファは、「」。 スライド量は、0。 //パスワードが必要かどうかを判定 もし、LEFT(バッファ,8)が、「ピカピーカピカピ」なら、( //パスワードヘッダを削除 バッファから、8文字、左端を切り取る。 「4桁の数字でパスワードを、入力してください。」と、尋ねる。 もし、それが、「」なら、スライド量は、0。 でなければ、( もし、それが、はいなら、( //スライド量が数値だった場合 スライド量は、INT(スライド量)。 //スライド量が4桁以上の場合 もし、スライド量が、10000以上なら、スライド量は、0。 ) でなければ、( //スライド量が数値ではなかった場合 スライド量は、0。 ) ) ) //文字列を数値に置換 母艦の、タイトルは、「復号化準備中...」。 それは、バッファ。 10回、「{暗号辞書#(回数-1)}」を、「{回数-1}」に、置換。 バッファは、それ。 //処理回数の取得 バッファの、「\n」を、「」に、置換。それの、文字数。 バッファ長=それ/6。 バッファの、要素数。 バッファ長は、INT(バッファ長+それ)。 バッファ長回、( //復元処理 母艦の、タイトルは、「復号中({INT(回数/バッファ長*100)}% 完了)...」。 もし、バッファが、「」でなければ、( 「{LEFT(バッファ,1)}」の、キーコード。 それで、条件分岐。 10の時、( //なにもしない ) 13の時、( //改行 バッファの、0行目を、行削除して、バッファに、入れる。 復号バッファは、復号バッファ&「\n」。 ) その他の時、( バッファから、6文字、左端を切り取る。 一次バッファは、それ。 //正常に変換されたデータかチェック 一次バッファが、数列か。 もし、それが、いいえなら、復元エラーへ、飛ぶ。 //暗号解除処理 一次バッファ=一次バッファ-スライド量。 //ピカチュウ語から復元 復号バッファは、復号バッファ&CHR(一次バッファ)。 ) ) ) //表示の更新 エディタの、テキストは、復号バッファ。 母艦の、タイトルは、「ポケットモンバータ - {処理ファイル名}」。 戻る。
*復元エラー 「この文書は復元できません。」と、言う。 母艦の、タイトルは、「ポケットモンバータ - {処理ファイル名}」。 待機。
*コンバートパスワード使用 パスワード使用メニューの、値を、それに、得る。 //メニューチェックのオンオフを入れ替え もし、それが、オンなら、パスワード使用メニューの、値は、オフ。 でなければ、パスワード使用メニューの、値は、オン。 戻る。
*書式右端で折り返す 右端で折り返すメニューの、値を、それに、得る。 //メニューチェックのオンオフを入れ替え もし、それが、オンなら、( 右端で折り返すメニューの、値は、オフ。 エディタの、スクロールバーは、両方。 ) でなければ、( 右端で折り返すメニューの、値は、オン。 エディタの、スクロールバーは、縦。 ) 戻る。
*書式フォント フォント選択。 もし、それが、「」でなければ、エディタの、フォント書体は、それ。 戻る。
*ヘルプバージョン情報 「ポケットモンバータ Version 1.0\n\n」& 「Copyright(C) by open.doc/kobachi」と、言う。 戻る。
*オブジェクトのリサイズ エディタの、サイズは、(0,0,(母艦の、幅),(母艦の、高さ))。 戻る。 |