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


HSPTV!掲示板


未解決 解決 停止 削除要請

2014
0423
kai合計物理メモリの量を取得したい!!9解決


kai

リンク

2014/4/23(Wed) 16:48:46|NO.61635

メモリ解放ソフトを作っております、kaiです。
物理メモリの合計を取得したくて、以下のようなスクリプトを作りましたが

allmem = sysinfo(34)/(1024*1024) mes allmem
2GB以上のサイズは取得できないようで-34MBとなってしまいます。
これをどうにかして取得できないでしょうか?

よろしくお願いします。



この記事に返信する


Hathino

リンク

2014/4/23(Wed) 20:45:28|NO.61636

2GBは、バイトに直すと約2147483648バイトになります。
HSPが標準で扱える変数の値の限界は2147483648だったと思います。

2GB以上を取得しようとすると限界値の2147483648を変数が越えてしまうので、
そのようなことになるのだと思います。

外部のdllに2147483648以上の変数を扱えるものがあった気がするので、
そちらを探してみてください。

私も探します。



Hathino

リンク

2014/4/23(Wed) 20:49:04|NO.61637

たぶんこれです。
青い葉っぱさんのページのlongint.dllってやつだと思います。

http://hp.vector.co.jp/authors/VA034288/



掘木

リンク

2014/4/23(Wed) 23:23:52|NO.61639

sample\new\ntmem.hsp を見る限り、kernel32の中の
GlobalMemoryStatusEx
を呼べば解決できそうですよ?

;一例 (とりあえずdouble型に突っ込んでみる) #uselib "KERNEL32.DLL" #func GlobalMemoryStatusEx "GlobalMemoryStatusEx" var dim buf,16 buf(0) = 64 GlobalMemoryStatusEx buf fmem = 0.0 fmem += buf(3) fmem *= 0x10000 fmem += ( buf(2)>>16 ) & 0xFFFF fmem *= 0x10000 fmem += buf(2) & 0xFFFF mes strf("メモリ容量:%f MB (%f GB)",fmem / 1024/1024 , fmem/1024/1024/1024)
buf(3)はともかくbuf(2)をunsignedで計算しなきゃならない辺りは注意ですね。



goupon

リンク

2014/4/24(Thu) 03:11:00|NO.61641

doubleで行くならこうするのがかんたんです

#uselib "KERNEL32.DLL" #func GlobalMemoryStatusEx "GlobalMemoryStatusEx" var ddim buf,8 lpoke buf,0,64 GlobalMemoryStatusEx buf fmem=double(strf("%I64u",buf.1)) mes strf("メモリ容量:%f MB (%f GB)",fmem / 1024/1024 , fmem/1024/1024/1024)



kai

リンク

2014/4/24(Thu) 07:29:55|NO.61642

gouponさんのスクリプトを使用させていただきたいのですが、小数点以下を表示させないようにするにはどうすればよろしいでしょうか?



YSR

リンク

2014/4/24(Thu) 08:45:05|NO.61644

>小数点以下を表示させない
int関数……は使わない方向で考えると、

1. 当該実数(浮動小数)をstr関数で文字列にする 2. instr関数で文字列内の「.」の位置を探し出し、strmid命令で切り出し。 もしくはsplit命令で「.」を区切りとして分割し、出力文字列配列の先頭要素を取り出す。
となりますね。四捨五入したい場合は「.」の次の数字で場合分けすれば良いでしょう。



goupon

リンク

2014/4/24(Thu) 10:30:02|NO.61646

最後の一行を以下に変えれば小数点以下は表示されません。
ただし四捨五入されますけど。

mes strf("メモリ容量:%.0f MB (%.0f GB)",fmem / 1024/1024 , fmem/1024/1024/1024)



kai

リンク

2014/4/25(Fri) 07:24:12|NO.61673

ありがとうございます。できました!!



kai

リンク

2014/4/25(Fri) 07:24:59|NO.61674

解決ボタンの押しわすれー



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