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


HSPTV!掲示板


未解決 解決 停止 削除要請

2010
0610
さーしゃ回数計測プログラムの計測結果をテキストに保存したいのですが・・・5解決


さーしゃ

リンク

2010/6/10(Thu) 21:12:44|NO.33196

前の質問のあと、テキストに書き出す機能をつけようと思ったのですが・・・
最初に出力したテキストに、日付を入れてどんどんログを追加しようと思ったのですが
出力しても真っ白なテキストが出てきて
上書きしようとしたら「パラメータの型が間違っています」とエラーが出ました
どうしたらいいんでしょうか?
お願いします<(_ _)>


title "計測器" width 350,350,350,350 onkey *keyit mes "簡単な測定器です\nA〜Fまでのキーの押された回数を表示します\nEnterを押して開始してください" stop *keyit x=iparam pos cls mes"簡単な測定器です\nA〜Fまでのキーの押された回数を表示します\n " if x=65 : a=a+1 if x=66 : b=b+1 if x=67 : c=c+1 if x=68 : d=d+1 if x=69 : e=e+1 if x=70 : f=f+1 mes"Aは  "+a mes"Bは  "+b mes"Cは  "+c mes"Dは  "+d mes"Eは  "+e mes"Fは  "+f button "出力" , *s2 button "追加" , *s3 mes"「出力」を押すとマイドキュメントに\n「回数.txt」が出力されます" mes"「追加」を押すとマイドキュメントの\n「回数.txt」にデータが追加されます" stop *s2 ta=gettime(0) tb=gettime(1) tc=gettime(3) td=gettime(4) te=gettime(5) tf=gettime(6) deta=ta+"年"+tb+"月"+tc+"日 "+td+":"+te+":"+tf+"\n \nA  "+a+"回\nB  "+b+"回\nC  "+c+"回\nD  "+d+"回\nE  "+e+"回\nF  "+f+"回" notesel deta notesave "回数.txt" stop *s3 ta=gettime(0) tb=gettime(1) tc=gettime(3) td=gettime(4) te=gettime(5) tf=gettime(6) notesel abc noteload "回数.txt" deta=ta+"年"+tb+"月"+tc+"日 "+td+":"+te+":"+tf+"\n \nA  "+a+"回\nB  "+b+"回\nC  "+c+"回\nD  "+d+"回\nE  "+e+"回\nF  "+f+"回" noteadd date,-1,0 stop



この記事に返信する


SYAM

リンク

2010/6/10(Thu) 21:26:39|NO.33200

保存に失敗しているところだけお答えします。
これが分かったら他の箇所も自力で修正できるかも。


>型が間違っています

このメッセージの意味をちゃんと考えましょう。
保存に失敗するのも、「型が間違って」いるのが原因です。

数値変数 と 文字列変数 という2種類の変数があるということはお分かりですよね?


分かっていなかったら勉強しなおしです。
このことは絶対に必須ですから、数値、文字列あたりをキーワードにして過去ログを検索してください。

HSPの計算式(文字列の足し算=連結も含む)の結果は、一番最初に出てきた項の型に合わせた型になります。
つまり、


a = 1 + 1
だと、 a は数値の2になり、


a = "1" + 1
だと、 a は文字列の "11"になります。

そこで……


deta=ta+"年"+tb+"月"+tc+"日 "+td+":"+te+":"+tf+"\n \nA  "+a+"回\nB  "+b+"回\nC  "+c+"回\nD  "+d+"回\nE  "+e+"回\nF  "+f+"回"

この行。
ta は gettime(0)の結果、つまり数値が入っています。なので、変数 deta は数値型の変数になってしまっています。
足し算なんかまともにできてませんし、文字列変数を前提としている notesel , notesave 命令は正常に動きません。

なので、対策としては…


deta=""+ta+"年"+tb+"月"+tc+"日 "+td+":"+te+":"+tf+"\n \nA  "+a+"回\nB  "+b+"回\nC  "+c+"回\nD  "+d+"回\nE  "+e+"回\nF  "+f+"回"

こうすると、最初の項が文字列(空っぽですが)なので、計算式は文字列扱いとなり、変数 deta は文字列になります。
もちろん、 notesel , notesave 命令もちゃんと動作します。



さーしゃ

リンク

2010/6/10(Thu) 21:57:19|NO.33204

ありがとうございます!!



info

リンク

2010/6/10(Thu) 22:07:55|NO.33205

もう解決しているようですが。
一応追記させていただきます。

文字列を編集するのにはstrf関数が便利です。

mes strf("%04d年%02d月%02d日 %02d時 %02d分" ,gettime(0) ,gettime(1) ,gettime(2) ,gettime(4) ,gettime(5) )



retret

リンク

2010/6/12(Sat) 00:59:24|NO.33213

余計なものを持ち込まないことだ
別の疑問が発生するだろう



cv

リンク

2010/6/12(Sat) 18:35:19|NO.33220

strfならここを見てください。
http://lhsp.s206.xrea.com/command/strf.html



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