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


HSPTV!掲示板


未解決 解決 停止 削除要請

2014
0606
かふぇぐまロードしたテキストのカウント3解決


かふぇぐま

リンク

2014/6/6(Fri) 18:00:42|NO.62324

プログラムの起動した回数をカウントできるプログラムを作りたいのですが、


notesel a noteload "test.txt" a=a+1 notesave "test.txt"

上記のものだと起動するたびに1111…となっていいいてしまします。

今、頭の中にあるものだと1+1=2、2+1=3…という風に回数を重ねていきたいです。

HSP初心者なのでイマイチ改良策が思いつきません。どうしたらいいでしょうか?



この記事に返信する


cats

リンク

2014/6/6(Fri) 18:31:28|NO.62325

ファイルに保存するということは、同時に
数値が文字列に変換されるということです。
そのため、読み込んだファイルのデータに対して
計算をしたいときは一度文字列を数値に変換する
必要があります。
HSPではintやstrを利用して簡単に変換できるようになっています。
int(n) : nを整数値にする
str(n) : nを文字列値にする
double(n) : nを実数値にする
例えば以下のような例が挙げられます。

a = "5" b = "-9" c = "3.05" ; a+bを出したい ret = int(a) + int(b) mes ret ; b*cを出したい ret = double(b) * double(c) mes ret ; a/cを出したい ret = double(a) / double(c) mes ret stop
プログラミング言語では変数の"型"が大切です。
HSPではこの型を勝手に推測して変換してくれますが、
他の言語ではなかなかそうはいきませんから
型によるエラー、バグには注意してください。
以下が解決策の一例です。

sdim buf notesel buf exist "test.txt" ; ファイルが存在するか if strsize=-1 : noteload "test.txt" mes "" + buf + "回目の起動です。" buf = int(buf) + 1 ; buf = 数値のbuf + 1 buf = str(buf) ; buf = 文字のbuf notesel buf notesave "test.txt" stop



kanahiron

リンク

2014/6/6(Fri) 18:33:19|NO.62326

これでどーでしょー
notesel a
noteload "test.txt" a=str(int(a)+1) notesave "test.txt"



かふぇぐま

リンク

2014/6/6(Fri) 18:47:54|NO.62327

変数の型まで頭が回っていませんでした。
私のプログラムだと文字列として扱われていたので足し算ができなかったんですね(汗)

お二方とも回答ありがとうございました。



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