ソフト制作記録

HomeSoftwareBlogソフト制作記録AlbumnContactOnline HelpInvestment

HSPプログラミング超初心者・・・未熟な私のプログラミング日誌

気が付いたことや失敗の記録(お恥ずかしいことばかりです、笑って下さい・・・)。

インフォメーション

メインPCのOSを Windows 7 Ultimate X64 から Windows 8 Pro X64 にアップグレードしました。
 アップグレードの場合は互換性がないプログラムはアンインストールされる迄インストール出来ずに、
インストールにとっても時間が掛かりました。

 全般的な感想は、起動が速くパフォーマンスが高いです(ハイバネートで高速起動を可能にしたWindows 8)。

エクスプローラやスリープ状態からの起動、Alt+Ctrl+Delでの選択画面表示、タスクマネージャーの起動が速いです。
Windows Vista や Windows 7 のビジュアル重視の3D画面から一変してフラットな2D画面になって、
ちょっぴり物足りない感じがしますけど、パフォーマンスには満足しています。
 タスクマネージャーも見易いです。
処理されるプロセスがタスクマネージャーでは明確になりました。
 X64では、HSPは32ビットプロセスで実行される為、HSP製のソフトで起動されるプログラム(メモ帳やペイントブラシ)は
32ビットプロセスでエミュレートされます。 
普通にメモ帳やペイントブラシを起動する場合は64ビットプロセスで実行されます。
Windows 7 でもそうだったみたいですが・・・気が付きませんでした。

 Windowsの使い方として「ファイル名を指定して実行」等の出し方は、
1.マウスを画面一番左下にもっていきます。
2.メトロUI画面へのショートカットがポップアップする場所で 右クリック します。
「ファイル名を指定して実行」や「デバイスマネージャー」「コントロールパネル」へのショートカットが含まれる
コンテキストメニューが現れます。
 ハードコピーを取る時にデュアルディスプレイの場合は同時に2つのディスプレイのコピーが取れます。
デスクトップの背景をスライドショーにしておくとそれぞれのディスプレイが別個に変わります。
 Windows 7 と比べてプログラムの互換性が高くなっています。
CanoScan FB1210U(2000年発売)に付属していたPhotshop LEをずっと愛用していて、
Windows 7 X64ではインストールに苦労しましたが、Windows 8 ではそのまま使えます。

 ただ、Windows Vista からの特徴であったブラー・ビハインド・ウインドウ(Aero効果)が廃止され、
何か月も掛けて開発して来たスクリプトが使えなくなって物凄く落ち込んでいます(Aeroを有効にする方法もありますが・・・)。
しかも、Windows 8 はそのスタイルとコンセプトからして、ランチャーも殆ど必要なくなってしまいました。
実は"愛ちゃん version 5.0"はランチャーとかが売りでした・・・orz。
 Windows 8 は、ランチャーの代わりにタイマーを起動させる予定です。
デザインもメトロスタイルにするつもりです。
いずれにせよ、Windows8からは大幅な変更を余儀なくされそうです(T_T)。

※ ユーザーインターフェイスの特徴
Aero Glassの代替として、背景画像の平均的な配色に応じてウィンドウの枠などの配色が
自動的にほぼそれに調和するように設定されるAero Auto Colorが新たに搭載されました。
Windows Aeroのシェル操作は引き続き搭載されるものの、ウィンドウを半透明にする機能は無効化されているだけで、
有効化することはできるそうです。


Windows 8 の新機能(Aero Glass の代替)



デスクトップ上で起動させるプログラムとしては殆ど変更はないみたいです。
Windowsのバージョンを変更しただけでした。
とりあえず今は様子を見ています。

タイマーのバグを修正しました。
音楽再生を選ぶとCD、DVD再生が可能なのですが、アイコンが正常に表示されませんでした。
もう次から次へとバグが見つかって・・・とっても落ち込んでいます。
まだまだ未熟な私は理想に自分のキャパが追いつかないみたいです(笑)。
タイマーは愛ちゃんと連動します。


ちょっとしたこだわりがあって、
タイマーのボタンもメモリ使用率に応じて変わる部分があります。

またまた、バグの報告で申し訳ありません。
前回のバージョンでランチャーの計算機能を使うとエラーが出るバグを修正しました。
今回のバグも初歩的なミスでした。
ランチャーは大体3000行程度のプログラムなのですが、変数が多くて・・・使用している変数の数が394個で・・・
当然ダブりがありました・・・。
別個のモジュールに同じ変数名を使ってしまい、"変数の型が違う"というエラーでした。
具体的には、4G以上のメモリを認識するプロセスで登録した変数がインタプリタ電卓の変数とダブっていました。
これは私の性癖と言うか・・・昔から数学が好きで物事を一般化、拡張するのが好きで、とにかく変数が好きなんですよね・・・。
変数を使うと修正とかが一発で済むんですが、それが仇になったみたいです。

ソフトの完成度を上げて将来はWindowsロゴを取得したいナーって夢があるんですけど・・・まだまだ遠い道のりです。


ソフトの差し替え手続きを終えましたので週末には修正バージョン"ver4.01"が公開されます。
ヘルプファイルが表示されないことに関してはにししふぁくとりー様のHPで解説されています。


 2012/02/10  お詫び。

"デスクトップペット 愛ちゃん version 4.00 for Highend Machine"に重大なバグが見つかりました。
(見つかったと言うよりも、気が付きました)。

4GBを超えるメモリを認識しないことです。
新しいPC (Windows7 X64 / メモリ16GB)で"愛ちゃん4.00"を起動させたら、"物理メモリが足りません。"
ランタイムエラーが出て終了!しかも、ヘルプファイルも開けません!
「何だコレ!?」・・・もう頭が真っ白!

今迄4台のPC(XP X86, XP X64, Vista X86, Windows7 X86, Windows7 X64合計8つのOS 2つ重複)
では普通に動作して、ヘルプファイルも見る事が出来ました。
今PCが2台新しくなって、データは外付けHDDにある為参照出来なくなったのですね。

ダウンロードして下さった皆さまには本当に申し訳ありませんでした。
現在差し替えバージョンの製作中です。
新しいバージョンが出る迄はオンラインヘルプを公開します。


これまた基本中の基本なのですが・・・漠然とawaitは細かい時間で設定できるけど、waitよりもCPUを消費するって程度で特に意識して使い分けていませんでした。 どうしてもCPU使用率を下げる必要があってコマンドを色々見直していたら、こんな明快な説明をしてくれるサイトがありました(感謝です!!)。

   
 結局私のソフトは常駐型のデスクトップアクセサリーなので快適に動けば良いだけで、他の作業の妨げになってはいけないのです。
・・・ですのでとにかくCPU、メモリーの使用率を最低限に抑えるのが大前提なのですね。


ずっと3ケ月以上の間、”HSPエラー9サブルーチンやループのネストが深すぎます;
 repeat-loop命令のループ処理に問題があります。ネストは「(ループの)深さ」のことです。
ループを強制的に抜ける場合はbreak命令、ループの先頭に戻る場合はcontinue命令を利用し、
一時的に抜ける場合はgosub命令やbutton命令(gosubタイプ)を利用します。
ループ中にgoto命令やbutton命令(gotoタイプ)の処理を絶対に行わないようにしてください。)”
~で悩んでいました。
最初、このエラーが出た時に全てのプログラムを見直して、出来る限りgosubを使わない様にgosub~returnをgotoに変えてラベルジャンプにしました。
勿論ループを抜ける時はbreak命令も使っていました。
repeat~loop命令に関しても、プログラムが長くなって無駄な部分が増えますが、コピペで同じ行を複写してダラダラとそのまま処理させる様にしました。
それでも繰り返し回数が100を超える場合等、どうしてもrepeat~loopを使わざるを得ない部分が出て来たり、
gosubを使ってなくてもoncmdやonclick等の割り込みが入って長く起動しているウチにやっぱりエラーになってしまいました。
割り込みばかりはどうしようもないのでずっと頭を抱えていました。
プログラム自体も5000行を超えて(トータルで25000行)デバックにも困難を極めていた所でした。
割り込みが入ってループを抜けた場合、どうにかならないかと色々調べてたら、解決法が見つかりました。
マクロでrepeat命令等を改造する方法です。

 
これでエラー9が回避されれば良いナーって思っています。問題が未だ幾つか残っていて、デバックは続きます。
新しいバージョンの公開はまだまだ先になりそうです。(-。-;)
時間が掛かっても、安心して使えるモノを・・・納得の行くモノをと思っています。



現在"Desktoppet Aichan version4.00"のデバック中です(公開は未だ先になりそうですm(_ _;)m)。
最近になってやっとエラーがでなくなってホッとしていたところでしたが、プログラムをちょっと変更したら、
ノートンのSONAR機能によって自動的に削除 されてしまいました・・・(ノ_-。)。
そこで色々考えて、途中でdllを呼び出していましたが、先頭に持って来たら削除されなくなりました。
普通dll呼び出しや、defineは頭の方に持って来るのですが、XPとVistaではプログラムの処理が違うので、
OS選択でXPの時とVista以降の時で呼び出すdllや使う機能も別になって来るため、途中でdllを呼び出していました。
具体的には、"#uselib "dwmapi.dll"
#func DwmEnableBlurBehindWindow "DwmEnableBlurBehindWindow" int, int
#define DWM_BB_ENABLE 0x00000001
#define TRUE 0x00000001"
Vistaのブラー・ビハインド・ウインドウを表示する部分なんですけど・・・。
幸いXPでは使わないのでdll呼び出しと関数定義を先頭に持って来てVistaの部分だけ
"DWM_BLURBEHIND = DWM_BB_ENABLE, TRUE, 0
DwmEnableBlurBehindWindow hwnd, varptr(DWM_BLURBEHIND)"としました。


Vistaの画面です

XPの画面です

Copyright (C) aichan&ayachan. All Rights Reserved.