HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2016
0801
てきすと謎のエラー2解決


てきすと

リンク

2016/8/1(Mon) 10:23:43|NO.76476

hsp初心者です。
原因不明のエラーがでて困ってます。
今、cpuの使用率を記録するソフトを作っているのですが、
コンパイルして一番最初のウィンドウの参照ボタンの下の時刻なしにチェックをいれてから
始めるボタンを押すと126行目(ラベル*syuryou内)のmesboxでエラー番号6のエラーが起きます。
多分下のスクリプトの*kaisiラベル内のif文に問題があると思うのですが対処法がわかりません。
どうかわかる方よろしくお願いします。

#include "user32.as" #define WM_NCLBUTTONDOWN $000000A1 #define HTCAPTION 2 #define PDH_FMT_LONG ( 0x00000100) #define PDH_FMT_DOUBLE ( 0x00000200) #define PDH_FMT_LARGE ( 0x00000400) #uselib "pdh.dll" #cfunc PdhOpenQuery "PdhOpenQuery" int,int,int #cfunc PdhAddCounter "PdhAddCounterA" int,int,int,int #cfunc PdhCollectQueryData "PdhCollectQueryData" int #cfunc PdhCloseQuery "PdhCloseQuery" int #cfunc PdhGetFormattedCounterValue "PdhGetFormattedCounterValue" int,int,int,int alloc Value, 16 dupptr cpu_l,varptr(Value)+8,4,vartype("int") dupptr cpu_d,varptr(Value)+8,8,vartype("double") hQuery=0 hCounter=0 mes ""+PdhOpenQuery(NULL,0,varptr(hQuery))+"setup...30%" PATH="\\Processor(_Total)\\% Processor Time" mes ""+PdhAddCounter( hQuery , varptr(PATH) , 0, varptr(hCounter) )+"setup...80%" mes ""+PdhCollectQueryData(hQuery)+"setup...100%" *kiroku cs=0 sdim kirokusaki,10000 wx=ginfo(4):wy=ginfo(5) screen 0,670,90,0,wx,wy title"CPU記録計" mes"CPU使用率を記録します" mes"記録先テキストフォルダ" mes"(無記入の場合記録されません)" pos 180,17 input kirokusaki,400,20,1000 pos 590,15 button gosub"参照",*kiroku_sansyou chkbox"整数のみ",cs chkbox"時刻なし",cj pos 0,60 objsize 250,30 button goto"始める",*kinou stop *kiroku_sansyou dialog "txt",16,"記録先テキストフォルダ" if stat=1{ kirokusaki=refstr objprm 0,kirokusaki return }else{ return } stop *kinou k_cou=0:sdim cpu_kiroku,10000000 if kirokusaki=""{ }else{ notesel kiroku_txt noteload kirokusaki } wx=ginfo(4):wy=ginfo(5) screen 0,195,43,0,wx,wy title"記録前" mes"開始を押すと始まります button goto"開始",*kaisi pos 65,18 button goto"一時中断",*tyudan pos 130,18 button goto"終了",*syuryou stop *kaisi objenable 0,0 title"記録中" objprm 0,"開始" repeat redraw 0 k_cou=k_cou+1 color 255,255,255 boxf color 0,0,0 pos 0,0 mes"記録中 "+k_cou+"回" A=PdhCollectQueryData(hQuery) A=PdhGetFormattedCounterValue (hCounter, PDH_FMT_DOUBLE, 0, varptr(Value)) ji=gettime(4) hu=gettime(5) by=gettime(6) ;_/_/_/_/_/_/_/このif文だと思うのですが if k_cou=1{ if(cs=1)and(cj=1):cpu_kiroku=int(cpu_d) if(cs=1)and(cj=0):cpu_kiroku=""+ji+"時"+hu+"分"+by+"秒"+int(cpu_d)+"%" if(cs=0)and(cj=1):cpu_kiroku=cpu_d if(cs=0)and(cj=0):cpu_kiroku=""+ji+"時"+hu+"分"+by+"秒"+cpu_d+"%" }else{ if(cs=1)and(cj=1):cpu_kiroku=cpu_kiroku+"\n"+int(cpu_d)+"" if(cs=1)and(cj=0):cpu_kiroku=cpu_kiroku+"\n"+ji+"時"+hu+"分"+by+"秒"+int(cpu_d)+"%" if(cs=0)and(cj=1):cpu_kiroku=cpu_kiroku+"\n"+cpu_d+"" if(cs=0)and(cj=0):cpu_kiroku=cpu_kiroku+"\n"+ji+"時"+hu+"分"+by+"秒"+cpu_d+"%" } redraw 1 wait 100 loop *tyudan objenable 0,1 title"中断中" color 255,255,255 boxf color 0,0,0 pos 0,0 mes""+k_cou+"回で中断中" objprm 0,"再開" stop *syuryou if kirokusaki=""{ }else{ notesel kiroku_txt noteadd cpu_kiroku,-1,0 notesave kirokusaki } wx=ginfo(4):wy=ginfo(5) screen 0,350,413,0,wx,wy title"記録結果" mes"記録結果はこちらです" mesbox cpu_kiroku,350,350,0,10000000//ここでエラー番号6のエラーが発生 if kirokusaki=""{ kakunin="記録先が無記入のため記録されませんでした" }else{ kakunin="記録は正常に行われました" } mes kakunin objsize 350,25 pos 0,387 button goto"戻る",*kiroku stop



この記事に返信する


砂時 計

リンク

2016/8/1(Mon) 12:16:35|NO.76479

エラー6は、パラメータの型が違います、です。
cpu_kirokuはsdimで使っていますが
どこかで文字列でない型に変わってしまっているのでしょう。

ご本人が気づいてらっしゃるように90行以降の中が問題で
文字列でないものを代入すると新しい値に型が変わってしまいます。
以下のように""から始めると文字列になります。


if(cs=1)and(cj=1):cpu_kiroku=int(cpu_d) // 元(int型を代入してる) if(cs=1)and(cj=1):cpu_kiroku="" + int(cpu_d) // 書き換え例


if(cs=0)and(cj=1):cpu_kiroku=cpu_d // 元(double型を代入してる) if(cs=0)and(cj=1):cpu_kiroku="" + cpu_d // 書き換え例


----

ここからは別な部分へのコメントですが
nodeaddで1行ずつ追加するようにすると
k_couで分岐しなくてよくなりそうですね。



てきすと

リンク

2016/8/1(Mon) 12:31:18|NO.76480

解決しました!
noteaddの方も一応試してみます。
勉強になりました。
ありがとうございました。



ONION software Copyright 1997-2021(c) All rights reserved.