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


HSPTV!掲示板


未解決 解決 停止 削除要請

2012
0911
souHMemory.dllについての質問6解決


sou

リンク

2012/9/11(Tue) 20:22:37|NO.49322

下記のページで配布されているHMemory.dllのプログラムについての質問です。

http://www.vector.co.jp/soft/win95/prog/se345249.html


#uselib "HMemory.dll" #func ReadMemory "ReadMemory" str,int,var,int #func WriteMemory "WriteMemory" str,int,int,int #func DReadMemory "DReadMemory" var,int,var,int #func DWriteMemory "DWriteMemory" var,int,int,int #func WriteMemoryS "WriteMemoryS" str,int,str #func DWriteMemoryS "DWriteMemoryS" var,int,str #func DReadMemoryArray "DReadMemoryArray" var,int,var,int #func DWriteMemoryArray "DWriteMemoryArray" var,int,var,int #func GetID "GetID" str,var #func ExePro "ExePro" str,var #func StopProc "StopProc" str #func RestartProc "RestartProc" str /* HSP3.0用サンプル [UsaTest2.EXE]を予め起動しておく 戻り値を取得したい場合は#func→#cfuncに変更する */ //プロセス名を指定 pname = "UsaTest2.EXE" //アドレスを指定 adr = $0040218 mes "ReadMemory テスト" ReadMemory pname,adr,rdata,2 mes "0x"+strf("%X",adr) +" = "+ str(rdata) wdata = 5000 mes "WriteMemory テスト(5000で書き込み)" WriteMemory pname,adr,wdata,2 ReadMemory pname,adr,rdata,2 mes "0x"+strf("%X",adr) +" = "+ str(rdata)

この中の


adr = $0040218

$0040218の部分を自分で決めた変数にするにはどうすればいいでしょうか?


sdim code,200 adr = $code

としてもエラーが出てしまいます。



この記事に返信する


GrapeColor(DION)

リンク

2012/9/11(Tue) 21:17:12|NO.49323

私自身あまり分かってませんが
代入の時に変数名の先頭に$からじゃない・・・かな?



てれてれ

リンク

2012/9/11(Tue) 21:31:56|NO.49326

>代入の時に変数名の先頭に$からじゃない・・・かな?
変数名の先頭に$?

GrapeColorさんのやり方はよくわかりませんがvarptrを使えば出来ます。

sdim code,200 adr = varptr(code) mes "adr = $" + strf("%08X",adr)



てん

リンク

2012/9/11(Tue) 21:32:09|NO.49327

ドルマークは変数のアドレスを表すものではなく、16進数であることを示すマークです。
今回の場合、変数 code の【アドレス】を与えてあげましょう。
変数のアドレスの取得方法は調べてみてください。



GrapeColor(DION)

リンク

2012/9/11(Tue) 22:49:52|NO.49333

>>てれてれさん
すみません><
打ち間違えていました。
「代入の時に変数名の先頭に$からじゃない」
ではなく
「代入の時に変数名の先頭に$があるからじゃない」
でした
つまりてんさんと同じ事が言いたかったのです
今後誤字には気をつけたいと思います



てん

リンク

2012/9/11(Tue) 22:59:06|NO.49334

いや、代入の際にとか関係なく変数名には$は使えないはずです。
でないと $bed とかいう表記は、
はたして変数なのか、それとも16進数の0xBEDのことなのかわかりませんので。

おそらく問題はそこではなくて、
souさんは他のプログラムを経験したことがあって
$がポインタを返す演算子と勘違いしたのではないでしょうか。

私が言いたかったのはこういうことでした。



sou

リンク

2012/9/12(Wed) 10:07:53|NO.49335

みなさんありがとうございました。

varptrを使ったら問題なく動作しました。



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