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


HSPTV!掲示板


未解決 解決 停止 削除要請

2017
0209
イナウサ変数を保存する方法を教えて下さい。5未解決


イナウサ

リンク

2017/2/9(Thu) 16:33:49|NO.78205

変数を保存するという表現が正しいのか分かりませんが、要するにサーバーがあり、
そこにパソコンAとパソコンBがLANで繋がっています。
(つまりサーバーを含めた三台のパソコンからなるローカルエリアネットワークです)
そこで、パソコンAで実行中のスクリプトの変数xの値をパソコンBで実行中のスクリプトの
変数yに代入したいのです。また逆(パソコンBの変数aをパソコンAの変数bに代入)もした
いです。教えて下さい。



この記事に返信する


Cheesehamburg7273

リンク

2017/2/10(Fri) 14:53:13|NO.78215

hspdaの命令でvload命令とvsave命令があります
この命令は一度に全ての変数をファイルに保存できます



スペース

リンク

2017/2/10(Fri) 17:31:07|NO.78217

変数の保存と言うより通信ですかね。
以下のページの「チャットを作る」というサンプルはどうですか?
http://www.placeark.com/program_hsp_sample.html



イナウサ

リンク

2017/2/12(Sun) 10:20:16|NO.78244

チャットみました。接続が安定してていいのですが、私に扱えるようなスクリプトではないので
自作したスクリプトを見てもらってもいいでしょうか?書き込みと読み込む二つがあります。
また、これで問題としているのがキーを押し続けているとき、なぜか読み込まれた数値が0の
ときがあることです。(書き込んだ数値は0ではありませんでした)
///////////////////////////////////////////////////////////////////////////////
title"data.1書き込み"
width 250,100
color 0,0,0:boxf:color 255,255,255
randomize
repeat
onkey 0       //キー入力を受け付けない
key=wparam
getkey w,87
getkey s,83
getkey d,68
getkey a,65

if d=1:px++
if a=1:px--
if w=1:pz++
if s=1:pz--

if px ! text1{
color 0,0,0:boxf 0,0,100,15:color 255,255,255:pos 0,0:mes "x:"+px+""
text1=str(px)
notesel text1
notesave "3D1-1.txt"
}
if pz ! text2{
color 0,0,0:boxf 0,15,100,30:color 255,255,255:pos 0,15:mes "y:"+pz+""
text2=str(pz)
notesel text2
notesave "3D1-2.txt"
}
if tv ! text3{
color 0,0,0:boxf 0,30,100,45:color 255,255,255:pos 0,30:mes "z:"+tv+""
text3=str(tv)
notesel text3
notesave "3D1-3.txt"
}

await 10
loop
//////////////////////////////////////////////////////////////////////////////

title"data.1読み込み"

width 250,100
color 0,0,0:boxf:color 255,255,255
plox=double(plox)
ploy=double(ploy)
ploz=double(ploz)
repeat

splx=plx
exist"3D1-1.txt"
if strsize=-1:dialog"ないよ":end
notesel plx
noteload "3D1-1.txt"
if plx ! 0.0 & splx ! plx :plox=double(plx):color 0,0,0:boxf 0,0,100,15:color 255,255,255:pos 0,0:mes "x:"+plox+""

sply=ply
exist"3D1-2.txt"
if strsize=-1:dialog"ないよ":end
notesel ply
noteload "3D1-2.txt"
if ply ! 0.0 & sply ! ply:ploy=double(ply):color 0,0,0:boxf 0,15,100,30:color 255,255,255:pos 0,15:mes "y:"+ploy+""

splz=plz
exist"3D1-3.txt"
if strsize=-1:dialog"ないよ":end
notesel plz
noteload "3D1-3.txt"
if plz! 0.0 & splz ! plz:ploz=double(plz):color 0,0,0:boxf 0,30,100,45:color 255,255,255:pos 0,30:mes "z:"+ploz+""

await
loop
//////////////////////////////////////////////////////////////////////////////



スペース

リンク

2017/2/12(Sun) 12:56:54|NO.78245

>>なぜか読み込まれた数値が0のときがある事です。

再現することはできませんでした。
ソースコードを見る限り発生しそうな書き方も発見できませんでした。

ただ、if文に潜在的なバグがあります。

if ply ! 0.0 & sply ! ply:
HSPの変数等の型は左側の型に右側の型が合わせられます。
noteselで指定したplyはstr型なので、
内部でif ply ! 0.0はif ply ! "0.0"と解釈されています。
型の自動変換に頼りすぎると、思わぬバグが発生するので注意が必要です。
また、書き込み側ではint型の値で扱っているのに、
読み込み側ではdouble型というのも将来的にはバグになりかねません。



イナウサ

リンク

2017/2/12(Sun) 15:17:04|NO.78248

すいません。説明が足りませんでした。すべてサーバーに保存して、サーバー以外のパソコンA,B
で上のスクリプトを実行してください。



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