Delphi Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
델파이 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
FreePascal/Lazarus
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
델마당
볼랜드포럼 광고 모집

델파이 Q&A
Delphi Programming Q&A
[858] [답변] SEADAE/델파이 사용시 2.2GB 이상의 드라이브 용
cmart2 [ ] 1785 읽음    1998-01-21 17:37
안녕하세요.(주)나이렉스 인터내셔날의 짱굽니다.

음... 아마 델파이 자체함수를 사용하셨나 보군요...

DiskSize() function의 내부를 살펴 보면...담과 같죠..

function DiskSize(Drive: Byte): Integer;
var
  RootPath: array[0..4] of Char;
  RootPtr: PChar;
  SectorsPerCluster,
  BytesPerSector,
  FreeClusters,
  TotalClusters: Integer;
begin
  RootPtr := nil;
  if Drive > 0 then
  begin
    StrCopy(RootPath, 'A:\');
    RootPath[0] := Char(Drive + $40);
    RootPtr := RootPath;
  end;
  if GetDiskFreeSpace(RootPtr, SectorsPerCluster, BytesPerSector,
    FreeClusters, TotalClusters) then
    Result := SectorsPerCluster * BytesPerSector * TotalClusters
  else Result := -1;
end;

위에 보시면 Return값이 Integer로 되어 있군요... 이걸 comp로 바꾸셨다구

하신거 같군요... 그래서 저두 해 보았더니 ... 되는거 같같군요...

지금 저희 회사에는 4GB 이상 하드가 있지만 쪼각쪼각 나있어서 직접적인

테스트는 불가능 하구요... 저는 이렇게 해 보았죠...

  function DiskSize(퐻irve: Byte): Extended;
  {나머지는 같구요..}

    Result := 3847509347059.00;

  {이런 식으로 해주었죠..}

  후후~ 이건 정답이라곤 할수 없지만 값은 읽어오니까 한번 속는샘치구 해보시기

  바람니다.
 
  Caption := FolatToStr(DiskSize(3)); 이렇게요...

  쩝~ 만일 이게 안된다면 문제는 변수형이 아닐껍니다.

  아마 GetDiskFreeSpace()함수를 직접 제어하거나...아님....

  Fat의 구조 때문이 아닐까 생각 합니다.

  너무 심각해 지는 군요... 히히

  욜씨미 하세요...

존 코딩 하시구여...

그럼..


+ -

관련 글 리스트
858 [답변] SEADAE/델파이 사용시 2.2GB 이상의 드라이브 용 cmart2 1785 1998/01/21
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.