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


HSPTV!掲示板


未解決 解決 停止 削除要請

2008
0316
M,H保存ボタン9未解決


M,H

リンク

2008/3/16(Sun) 21:23:54|NO.14334

今度は変なことなを質問するのですが
↓はスクリプトの一部です。保存ボタンですがどこかミスっているのでしょうか

screen 0,1016,706,4,0,0 #uselib "user32" #func ShowScrollBar "ShowScrollBar" int, int, int #define SB_BOTH 3 pos 0,0 mesbox a, 700, 500, 5,0 mesbox_hwnd = objinfo(stat, 2) ShowScrollBar objinfo (stat, 2), SB_BOTH, 3 pos 65,500 button "保存", *hozon *hozon dialog "txt", 17, "テキスト" if stat = 0 : stop notesel a notesave refstr objprm 0, a stop



この記事に返信する


M,H

リンク

2008/3/16(Sun) 21:29:52|NO.14335


screen 0,1016,706,4,0,0 #uselib "user32" #func ShowScrollBar "ShowScrollBar" int, int, int #define SB_BOTH 3 pos 0,0 mesbox a, 700, 500, 5,0 mesbox_hwnd = objinfo(stat, 2) ShowScrollBar objinfo (stat, 2), SB_BOTH, 3 pos 65,500 button "保存", *hozon stop //入れ忘れていました *hozon dialog "txt", 17, "テキスト" if stat = 0 : stop notesel a notesave refstr objprm 0, a stop



As

リンク

2008/3/16(Sun) 21:32:50|NO.14336

>mesbox a, 700, 500, 5,0>
メッセージボックスの変数aは、数値型変数になっています。
メッセージボックスに文字列を表示するためには、変数aをsdimまたは"a="""にて文字列型変数
に初期化する必要があります。



>button "保存", *hozon
このあとの行に、stop命令がありません。
stop命令がないと、”*hozon”ラベルを通り越して、保存ダイアログを出してしまいます。



f

リンク

2008/3/16(Sun) 21:36:47|NO.14337

このスクリプトがサンプルではなく、このスクリプト起動時で起こる
エラーが問題として話をする。

まず、エラーが出るなら何のエラーが出たのか位書け。
そして聞く前にそのエラーの意味くらい調べろ。

「パラメータの型が違います」というエラーは、
文字列変数を指定するべき場所に数値変数を指定したり、その逆をやろうとしたり
したときに出るエラーだ。

ご丁寧に
>mesbox a, 700, 500, 5,0
の行でエラーが出ていると表示されているだろうが。

つまり、aが文字を扱う変数にじゃないとエラーが出ているのだ。
aが文字を扱えるように設定してやれば少なくともそこでのエラーは消える。

ま、がんばってみ。



f

リンク

2008/3/16(Sun) 21:37:40|NO.14338

む、遅かったか。



M,H

リンク

2008/3/17(Mon) 18:58:51|NO.14362

screen 0,1016,706,4,0,0
font "MSゴシック",20,1
color 0,0,255
mes "てすと"

a = ""

#uselib "user32"
#func ShowScrollBar "ShowScrollBar" int, int, int

#define SB_BOTH 3

pos 0,0
mesbox a, 700, 500, 5,0
mesbox_hwnd = objinfo(stat, 2)
ShowScrollBar objinfo (stat, 2), SB_BOTH, 3

a = ""
pos 700,0
mesbox a, 316, 500, 4, 0
mesbox_hwnd = objinfo(stat, 2)
ShowScrollBar objinfo (stat, 2), SB_BOTH, 3

a = ""
pos 500,500
mesbox a, 516, 100, 5, 0
mesbox_hwnd = objinfo(stat, 2)
ShowScrollBar objinfo (stat, 2), SB_BOTH, 3

pos 0,500
button "開く", *load
pos 65,500
button "保存", *hozon
pos 130,500
button "時刻", *label
pos 195,500
button "終わる",*owari
pos 260,500
button "新規作成",*saizu
pos 325,500
button "メモ全消し", *kesi
pos 0, 525
button gosub "切り取り", *cut
pos 65, 525
button gosub "コピー", *copy
pos 130, 525
button gosub "貼り付け", *paste
pos 195, 525
button gosub "削除", *clear
pos 260,525
button "初期全消し", *saizu2
pos 325,525
button "時間表示", *migi

stop

*cut
sendmsg mesbox_hwnd, 0x0300
return
*copy
sendmsg mesbox_hwnd, 0x0301
return
*paste
sendmsg mesbox_hwnd, 0x0302
return
*clear
sendmsg mesbox_hwnd, 0x0303
return
*load
dialog "txt", 16, "テキスト"
if stat = 0 : stop

notesel a
noteload refstr

objprm 0, a
objprm 1, a

stop
*hozon
dialog "txt", 17, "テキスト"
if stat = 0 : stop

notesel a
notesave refstr

objprm 0, a
stop
*owari
dialog "終了しますか?",3, "終了"

if stat = 6 {
end
} else {
}

stop
*label
youbi="日","月","火","水","木","金","土"

time =""+gettime(0)+"年"
time+=""+gettime(1)+"月"
time+=""+gettime(3)+"日"
time+=""+youbi(gettime(2))+"曜日"
time+="\n"
time+=""+gettime(4)+"時"
time+=""+gettime(5)+"分"
time+=""+gettime(6)+"秒"
time+="\n"

a+=""+time
objprm 0,a
stop
*saizu
dialog "今の文章を消しても良いですか?",3, "新規作成"

if stat = 6 {
clrobj 0,0
a = ""
pos 0,0
mesbox a, 700, 500, 5,0
mesbox_hwnd = objinfo(stat, 2)
ShowScrollBar objinfo (stat, 2), SB_BOTH, 3
} else {
}

stop
*saizu2
dialog "初期ボックスの文字を消しても良いですか?",3, "初期ボックス全消し"

if stat = 6 {
clrobj 1,0
a = ""
pos 700,0
mesbox a, 316, 500, 4,0
mesbox_hwnd = objinfo(stat, 2)
ShowScrollBar objinfo (stat, 2), SB_BOTH, 3
} else {
}

stop
*kesi
dialog "今のメモを消しても良いですか?",3, "メモ全消し"

if stat = 6 {
clrobj 2,0
a = ""
pos 500,500
mesbox a, 516, 100, 5,0
mesbox_hwnd = objinfo(stat, 2)
ShowScrollBar objinfo (stat, 2), SB_BOTH, 3
} else {
}
stop

*migi
youbi="日","月","火","水","木","金","土"

time =""+gettime(0)+"年"
time+=""+gettime(1)+"月"
time+=""+gettime(3)+"日"
time+=""+youbi(gettime(2))+"曜日"
time+="\n"
time+=""+gettime(4)+"時"
time+=""+gettime(5)+"分"
time+=""+gettime(6)+"秒"
dialog ""+time,1, "時間"
stop



Kpan

リンク

2008/3/17(Mon) 20:26:07|NO.14371

ぱっと見で気づいたことをいくつか。参考になれば幸いですー。

> youbi="日", 〜
「*migi」と「*label」にジャンプするたびに、何も変化もない曜日文字列を
何度も代入する処理は意味がないので、スクリの最初あたりで1回だけ代入。

> clrobj
メッセージボックスの中身を消去するだけならobjprm命令。オブジェクトを
わざわざ消去して再設置するのは無駄です。

> time =""+
全く同じ処理が2か所あって無駄なので、サブルーチンジャンプで1つに
まとめる。(あるいは、#deffuncで新規命令を作る



M,H

リンク

2008/3/17(Mon) 21:00:43|NO.14378

Kpanさん早速ありがとうございます

保存ボタンがおかしいみたいです
左のメインボックスの文字だけを保存したいのになぜか右下のサブボックスの
文字が保存されてしまいます。

開いたときに右の書き込み不可ボックスにも文字がでるのは仕様です



inovia

リンク

2008/3/17(Mon) 23:33:14|NO.14386

ちょっと気になったこと
長い文字列を入力してスクロールバーでスクロールできる状態になった時、
時刻挿入を行うとせっかく下げたスクロールが一番上まで戻ってしまいます。
objprm で書き換えをしているのが原因かと。
時刻挿入もsendmsgでやってあげると良いかもしれません。
それが仕様なら別にいいのですが・・・



As

リンク

2008/3/17(Mon) 23:54:23|NO.14388

ちゃんとしたメモ帳らしいエディットソフトを作るには、
・エディットコントロール
・エディットメッセージ
・エディットスタイル
などなどEDITに関する様々な応用が必要になります。HSPの標準命令はあくまで
WindowsプラットフォームSDKの機能をそのままラッピングしてるものがほとんどですので、
Windowsが提供するAPIを使えばできる細かいことが、HSPの標準命令では同じことができた
としても簡略化されていたりする場合があるので、動作が少しおかしかったりするようです。



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