PB 電子会議室

コメント

発言No. 更新日 題名(クリックすると発言内容と関連するコメントが表示されます)
12221 00/07/13 13:09:09 RE(4):PB6.5: GetDiskFreeSpaceExの使い方(解決) By SAI_I
12219 00/07/13 12:51:13 RE(3):PB6.5: GetDiskFreeSpaceExの使い方(もう一つ質問) By てとらぽっと
12214 00/07/13 11:30:09 RE(2):PB6.5: GetDiskFreeSpaceExの使い方(もう一つ質問) By SAI_I
12205 00/07/12 17:41:27 RE(1):PB6.5: GetDiskFreeSpaceExの使い方 By キノタク
12194 00/07/12 14:02:15 PB6.5: GetDiskFreeSpaceExの使い方 By SAI_I

カテゴリ:スクリプトの記述
日付:2000年07月12日 17:41 発信者:キノタク
題名:RE(1):PB6.5: GetDiskFreeSpaceExの使い方

SAI_Iさん、こんにちは。

>HD容量を求めたいです。

>過去ログを検索してみると、
>容量が2G以上の場合は GetDiskFreeSpaceEx を
>使うとあったのですが使い方が分かりません。

>そもそも、64Bitの引数があるような気がするのですが。
>それに変わる型などPBにあるのでしょうか?

確かに、PBには64bit精度の変数はないですね(僕が知らんだけかも...)

仕方がないのでunsignedlongの変数を2つ含んだ構造体を宣言してこれを引数に指定します。

構造体はこんな感じ...
global type ularge_integer from structure
    unsignedlong    low
    unsignedlong    high
end type

関数宣言はこれ
function integer GetDiskFreeSpaceEx(string lpDir,  &
    ref ularge_integer lpFreeBytesAvailableToCaller, &
    ref ularge_integer lpTotalNumberOfBytes, &
    ref ularge_integer lpTotalNumberOfFreeBytes) &
    library \"KERNEL32.DLL\" alias for \"GetDiskFreeSpaceExA\"

そうすると、64Bit分の数値のうち上32bitがhighに、下32bitがlowに格納されます
あとは ( high * 4294967296 ) + low をdec型の変数にでも受ければいいんじゃないかしら。

もしかすると、環境によってエンディアンに負けるかもしれません。



付加情報:

PowerBuilder Version (記載なし)

Client SoftWare

OS (記載なし)
DBMS (記載なし)
Browser (記載なし)

Server SoftWare

OS (記載なし)
DBMS (記載なし)
WebServer (記載なし)

PowerSpaceの運営は、パワーフューチャー株式会社が行っております。
Copyright © 2013 Power Future Co., Ltd.