Q&A

  • 디스크사이즈 알고파여..
특정 드라이브의 전체사이즈와 사용가능한 용량을 알아내고자 함니다..

책에서 참고하고.. 헬프를찾아.. 구현을 해보니..

엉뚱한 답이 나오는군여..

2,147,155,968 이라고 계속 나오네여..

어케 하나여?..

5  COMMENTS
  • Profile
    최용일 2000.05.23 06:42
    안녕하세요. 최용일입니다



    2G이상의 하드디스크 용량을 구하실려면 SysUtils에 정의되어있는 GetDiskFreeSpaceEx



    란 함수를 이용하세요. (델파이 4,5)



    델파이 3이하에서는 KERNEL32.DLL에서 GetDiskFreeSpaceEx를 익스포트해서 사용하세요.



    ^^ 항상 즐코하세요.



    권윤진 wrote:

    > 특정 드라이브의 전체사이즈와 사용가능한 용량을 알아내고자 함니다..

    > 책에서 참고하고.. 헬프를찾아.. 구현을 해보니..

    > 엉뚱한 답이 나오는군여..

    > 2,147,155,968 이라고 계속 나오네여..

    > 어케 하나여?..

  • Profile
    권윤진 2000.05.23 00:53
    최용일 wrote:

    > 안녕하세요. 최용일입니다

    >

    > 2G이상의 하드디스크 용량을 구하실려면 SysUtils에 정의되어있는 GetDiskFreeSpaceEx

    >

    > 란 함수를 이용하셔도 됩니다. (델파이 4,5)

    >

    > 델파이 3이하에서는 KERNEL32.DLL에서 GetDiskFreeSpaceEx를 익스포트해서 사용하세요.

    >

    > ^^ 항상 즐코하세요.

    >

    > 권윤진 wrote:

    > > 특정 드라이브의 전체사이즈와 사용가능한 용량을 알아내고자 함니다..

    > > 책에서 참고하고.. 헬프를찾아.. 구현을 해보니..

    > > 엉뚱한 답이 나오는군여..

    > > 2,147,155,968 이라고 계속 나오네여..

    > > 어케 하나여?..



    죄송한데여.. 위에 갈켜준거 쓰는 방법좀 알려주세여..

    헬푸에도 GetDiskFreeSpaceEx 가 없네여..

    흑흑..

    부탁합니다..

  • Profile
    최용일 2000.05.23 08:03
    안녕하세요. 최용일입니다.



    델파이 헬프메뉴에 보시면 Windows SDK가 있는데 여기에서 찾아보시면 됩니다.



    { The GetDiskFreeSpace Win32 API does not support partitions larger than 2GB

    under Win95. A new Win32 function, GetDiskFreeSpaceEx, supports partitions

    larger than 2GB but only exists on Win NT 4.0 and Win95 OSR2.

    The GetDiskFreeSpaceEx function pointer variable below will be initialized

    at startup to point to either the actual OS API function if it exists on

    the system, or to an internal Delphi function if it does not. When running

    on Win95 pre-OSR2, the output of this function will still be limited to

    the 2GB range reported by Win95, but at least you don't have to worry

    about which API function to call in code you write. }



    var

    GetDiskFreeSpaceEx: function (Directory: PChar; var FreeAvailable,

    TotalSpace: TLargeInteger; TotalFree: PLargeInteger): Bool stdcall = nil;



    아래는 예제입니다.



    var

    FreeBytesAvailableToCaller,

    TotalNumberOfBytes: TLargeInteger;

    TotalNumberOfFreeBytes: PLargeInteger;

    begin

    GetDiskFreeSpaceEx('c:', FreeBytesAvailableToCaller, TotalNumberOfBytes, TotalNumberOfFreeBytes);

    // TotalNumberOfBytes = 하드디스크의 총용량

    // TotalNumberOfFreeBytes^ = 하드디스크의 사용가능한 용량

    end;



    권윤진 wrote:

    > 최용일 wrote:

    > > 안녕하세요. 최용일입니다

    > >

    > > 2G이상의 하드디스크 용량을 구하실려면 SysUtils에 정의되어있는 GetDiskFreeSpaceEx

    > >

    > > 란 함수를 이용하셔도 됩니다. (델파이 4,5)

    > >

    > > 델파이 3이하에서는 KERNEL32.DLL에서 GetDiskFreeSpaceEx를 익스포트해서 사용하세요.

    > >

    > > ^^ 항상 즐코하세요.

    > >

    > > 권윤진 wrote:

    > > > 특정 드라이브의 전체사이즈와 사용가능한 용량을 알아내고자 함니다..

    > > > 책에서 참고하고.. 헬프를찾아.. 구현을 해보니..

    > > > 엉뚱한 답이 나오는군여..

    > > > 2,147,155,968 이라고 계속 나오네여..

    > > > 어케 하나여?..

    >

    > 죄송한데여.. 위에 갈켜준거 쓰는 방법좀 알려주세여..

    > 헬푸에도 GetDiskFreeSpaceEx 가 없네여..

    > 흑흑..

    > 부탁합니다..

  • Profile
    강민주 2000.05.22 22:45
    권윤진 wrote:

    > 특정 드라이브의 전체사이즈와 사용가능한 용량을 알아내고자 함니다..

    > 책에서 참고하고.. 헬프를찾아.. 구현을 해보니..

    > 엉뚱한 답이 나오는군여..

    > 2,147,155,968 이라고 계속 나오네여..

    > 어케 하나여?..



    안녕하세요. ^^

    드라이브 전체사이즈는 DiskSize();이걸로 하심 되구요.

    드라이브 사용가능한 용량은 DiskFree();로 하심 되겠네요.

    자세하건 도움암보심 예제 나오네요.

    0 - default disk

    1 - a

    2 - b



  • Profile
    권윤진 2000.05.23 00:51
    강민주 wrote:

    > 권윤진 wrote:

    > > 특정 드라이브의 전체사이즈와 사용가능한 용량을 알아내고자 함니다..

    > > 책에서 참고하고.. 헬프를찾아.. 구현을 해보니..

    > > 엉뚱한 답이 나오는군여..

    > > 2,147,155,968 이라고 계속 나오네여..

    > > 어케 하나여?..

    >

    > 안녕하세요. ^^

    > 드라이브 전체사이즈는 DiskSize();이걸로 하심 되구요.

    > 드라이브 사용가능한 용량은 DiskFree();로 하심 되겠네요.

    > 자세하건 도움암보심 예제 나오네요.

    > 0 - default disk

    > 1 - a

    > 2 - b



    제 하드가 16G 정도 되는데.. DisSize()를 써보니 음수가 나오고 그러네여..

    2기가 이상도 DiskSize()로 검사할 수 있는지여??





    >