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


HSPTV!掲示板


未解決 解決 停止 削除要請

2020
1024
CantRunRiverPULONGLONG型?4解決


CantRunRiver

リンク

2020/10/24(Sat) 17:00:36|NO.91682

RAMの取得方法でヒットしたGetPhysicallyInstalledSystemMemory関数を使おうと思っています。
https://docs.microsoft.com/en-us/windows/win32/api/sysinfoapi/nf-sysinfoapi-getphysicallyinstalledsystemmemory

しかしRAMのサイズが入るポインタの中身の値が2147483647を超えてしまい、
LONGLONG(PULONGLONG?)型での取得となってしまいます。

その為、64bitでの値の取得方法を教えてほしいです。



この記事に返信する


aaaa

リンク

2020/10/24(Sat) 19:00:36|NO.91683

取得するメモリの単位はキロバイトだからhspの整数範囲を超えることはほぼないと思いますので以下でいいと思います。

#uselib "kernel32.dll" #func GetPhysicallyInstalledSystemMemory "GetPhysicallyInstalledSystemMemory" var dim msize,2 GetPhysicallyInstalledSystemMemory msize mes msize
ほんとに整数の範囲を超えるなら以下の方法のように少数で取得すればいいです。

#uselib "kernel32.dll" #func GetPhysicallyInstalledSystemMemory "GetPhysicallyInstalledSystemMemory" var ddim msize,1 GetPhysicallyInstalledSystemMemory msize msize=double(strf("%I64u",msize)) mes msize



CantRunRiver

リンク

2020/10/24(Sat) 19:38:49|NO.91684

整数の範囲を超えるならすべて%I64uで実数にしていいんですかね?
ありがとうございます。大変参考になりました。



aaaa

リンク

2020/10/24(Sat) 21:03:25|NO.91685

strfで文字列にするだけならなら64bit整数の範囲すべて表示できます。
dobuleは±9007199254740992の範囲なら大丈夫です。
それ以上だと誤差が出ます。



CantRunRiver

リンク

2020/10/24(Sat) 21:07:30|NO.91686

> strfで文字列にするだけならなら64bit整数の範囲すべて表示できます。
> dobuleは±9007199254740992の範囲なら大丈夫です。
分かりました。ありがとうございます。



記事削除

記事NO.パスワード
(質問が解決したスレッドは他の利用者に活用してもらうため、削除しないようお願いします)

NO.91682への返信

マスコット

好きなマスコットを選んでください。

名前

e-mail
HOME
  1. 初めて利用する方は、HSP3掲示板の使い方をお読みください。
  2. 不要部分の多い長いスクリプトの投稿は ご遠慮ください。
  3. 書き込みは自動改行されません。適度に改行を入れてください。
  4. スクリプトは小文字の<pre>〜</pre>で囲むと見やすく表示できます。

削除用パスワード

解決したら質問者本人がここをチェックしてください。

エラー発生時、再送信すると二重送信になることがあります。
回答が得られたら、お礼書き込み時に[解決]チェックしてください。
SPAM防止のためURLから始まる文章は投稿できません。
SPAM防止のため英文字のみの本文を投稿することはできません。

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