「なでしこv1」開発掲示板

なでしこv1のバグや要望を書き込む掲示板
[一覧へ] > (@396) [中] [未処理]
@396■ (#1235) デバッグダイアログが出ず実行、応答なし。 - FONO (2009-10-08 21:23) /緊急 未処理
【症状】
デバッグダイアログが出ず実行され、応答なしになる。
その時にCPU使用率も急激に増加する。
【再現方法】
以下のソースを実行
//初期化
バージョンとは文字列=「v0.133RN」
母艦のタイトル=「NicoNicoBrouser {バージョン}」
経過ダイアログ=オフ
母艦の終了可能=オフ
//フォルダ生成
『お気に入り』の存在
もしそれ=0ならば
  『お気に入り』にフォルダ作成。
//更新チェック(うるさいから一旦切る)
//『http://fono.dip.jp/NNBV.txt』からHTTPデータ取得。
//もしそれ≠バージョンならば
//  「新バージョンが出ています。{\n}http://fono.dip.jp/で確認してください。」と言う。
//DLLインポート
●urlmon_URLDownloadToFileA({参照渡し}a,url,name,b,c) =DLL("urlmon.dll",
"HANDLE URLDownloadToFileA(
  LPUNKNOWN pCaller,
  LPCTSTR szURL,
  LPCTSTR szFileName,
  DWORD dwReserved,
  LPBINDSTATUSCALLBACK lpfnCB
)")
//隠しブラウザ
Zブラウザとはブラウザ
そのサイズは「0,0,640,480」
A_Fフォームとはフォーム
そのアイテムは「Zブラウザ」
そのWは580
そのHは438
//メニュー
主メニューとはメインメニュー
//ブラウザ進む・戻る
Brou_Aメニューとはメニュー
その、テキストは、『戻』
その、イベントは、Brou_Bc
そを主メニューに追加
Brou_Bメニューとはメニュー
その、テキストは、『進』
その、イベントは、Brou_Fw
そを主メニューに追加
/*タブ追加&削除
Tab_Aメニューとはメニュー
その、テキストは、『タブ追加』
その、イベントは、Tab_Add
そを、主メニューに追加
Tab_Bメニューとはメニュー
その、テキストは、『タブ削除』
その、イベントは、Tab_Del
そを、主メニューに追加
未製作*/
Downメニューとはメニュー
そのテキストは『動画ダウンロード』
そを主メニューに追加
//Down_Aメニューとはメニュー
//そのテキストは『自動ダウンロード』
//そのイベントはGet_VideoAuto
//その値は1
//その値は0
//そをDownメニューにメニュー追加
Down_Bメニューとはメニュー
そのテキストは『ダウンロード』
そのイベントはVideo_Dl
そをDownメニューに追加
//urlファイル利用
Favメニューとはメニュー。
そのテキストは『お気に入り』
そを主メニューに追加。
Fav_Aメニューとはメニュー
そのテキストは「お気に入りに追加」
そのイベントは、Add_Fav。
そをFavメニューに追加。
Fav_Barメニューとはメニュー
その、テキストは、「-」
そをFavメニューに追加。
「お気に入り\*.url」の、全ファイル列挙。
反復
  ファイルパスはそれ。
  ファイルパスの「お気に入り\」を空に置換。
  それの「.url」を空に置換
  Str_A=それ
  ファイルパスのINI開く。
  INIHandle=それ
  INIHandleで『InternetShortcut』の『URL』をINI読む。
  Str_B=それ
  INIHandleのINI閉じる。
  「Fav_{回数}メニューとはメニュー{\n}Fav_{回数}メニューのテキストは{[}{Str_A}{]}。{\n}Fav_{回数}メニューのクリックした時は{\n}{\t}{[}{Str_B}{]}へ、Brou_Change。{\n}{\t}待機。{\n}Fav_{回数}メニューをFavメニューに追加。」でナデシコする。
●Tab_Add
  Brou_Cnt=Brou_Cnt+1
  「ブラウザ{Brou_Cnt}とはブラウザ。」でナデシコする。
  そのサイズは「0,0,640,480」
  そのレイアウトは全体。
  「http://www.nicovideo.jp/」へ、Brou_Change。
  待機。
●Tab_Del
  待機。
●Get_VideoAuto
  待機。
●Brou_Bc
『ブラウザ1の戻る。』でナデシコする。
待機。
●Brou_Fw
『ブラウザ1の進む。』でナデシコする。
待機。
●Brou_Change(Sへ)
  ブラウザ1のURL=S
  戻る。

【要望】
仕様なら実行前に警告を出してほしい。意図しない動作なら改善を。
【バージョン】
1.5322
【その他】
ほかにも同じことをしようとした似たようなソースで
実行は始まるが、すぐ終了してしまうという症状が発生した。
(ブラウザ名)の戻る
(ブラウザ名)の進む
という命令を使おうとすると文法エラーが出て困る。
ひまわりからなでしこへ手動翻訳を試みたがうまくいかない。
ブラウザなどの部品名をこのひまわりソースのように扱おうとするとエラーが出る。タブブラウザ・エディタ製作するには現状では難ありだと思われる。
Brou_Cnt=Brou_Cnt+1
「ブラウザ{Brou_Cnt}」を、ブラウザとして、作成。
「ブラウザ{Brou_Cnt}」の、レイアウトは、全体。
「ブラウザ{Brou_Cnt}」の、変更した時は、Tab_NewName
Aタブページに、「タブ{Brou_Cnt}」の、タブ追加。
Str_B=(Aタブページの、テキスト)
Str_Bの、要素数。
Str_C=それ-1
Aタブページの、値は、Str_C
「ブラウザ{Brou_Cnt}」の親部品はA_Tタブページ
「ブラウザ{Brou_Cnt}」のURLは、『http://www.nicovideo.jp/
待機。

(#1242) 母艦の終了可能 - U D (2009-10-08 23:18) /中 未処理
母艦の終了可能=オフ

としている以上、終了できないのは当然だと思いますが・・・
(終了可能をオフにすると、終了可能をオンにしない限り終了しない。
 なので、普通は「閉じた時」イベントとセットで使います。)

とは言え、確かにこの挙動はよくないですねぇ。
CPU使用率が上がる件、確認しました。(v.1.5322, Win vista)
タスクマネージャから終了させるのにも難儀するというのはちょっと困りますね。

# この件も難しいですが、他の件(メモリリークや部品を壊せない件)の方が
# 重要度が高いと思うので、一旦優先度は「中」に下げておきますね。

----------------

それから姉妹言語とは言え、「ひまわり」と「なでしこ」は全く違う言語ですから、
全く同じ感覚で扱えるという風には考えない方がいいです。
(単純なソースならひまわりのままでも動くかもしれませんが、、、)
基本的に、「翻訳」するよりもなでしこの基礎文法を覚えて1から組む方が良いでしょう。

一応今回のソースだと、
 * イベントの扱い方
 * 部品の扱い方(動的・静的)
でひまわりの文法を引きずっている感じがします。
特に部品の扱いについては、「動的作成」などで調べると詳しい説明が見つかると思います。

他にも、「ひまわり」と「なでしこ」の違いや、ひまわりユーザがなでしこを使い始めるときに
注意すべきことのまとめなどが、Wikiや質問掲示板を探せば出てくると思います。

# 蛇足。ブラウザは"browser"では・・・f(^^;

(#1243) インデントの問題? - とおりすがり (2009-10-08 23:58) /中 未処理
UDさんと挙動が違いますねぇ。
vista SP2、ver.1.5322(フリー版)で実行したら、OSによって強制終了がかかった。

とりあえず、以下の部分は、ミスじゃない?
#こっから
●Brou_Bc
『ブラウザ1の戻る。』でナデシコする。
待機。
●Brou_Fw
『ブラウザ1の進む。』でナデシコする。
待機。
#ここまで

関数の内部処理がインデントされてないので、「ナデシコする」の部分が実行されてしまってる。
するとまだ存在してないブラウザ1に「ナデシコする」でアクセスしようとして、当該の症状がでるのでは?
よくは知らないけど、「ナデシコする」は実行時に構文解析するから、エラーを検出できないんでないでしょうかねぇ。

あと、インデント直して実行してみたら、「そのイベントは、Brou_Bc」となっていたので、やっぱり「ナデシコする」の部分が実行されてしまった。
(該当するところはすべて)「そのイベントは~Brou_Bc」って直してやったら、ただの終了しないプログラムになった。

あと関係なさそうだから消したけど、「  LPUNKNOWN」が定義されてないってエラーが出た。

(#1235)へ返信する:

👆お手数ですが、いたずら防止のために、「真夏」の読み方を記入してください。

編集時に使うキーを入力(省略可能)

画像ファイル(最大300KB)を添付可能