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

C++빌더 Q&A
C++Builder Programming Q&A
[61563] Re:파일용량 구하기
제리압빠. [kamizen] 3031 읽음    2010-06-15 16:45
확장성 때문이라도 GetFileSizeEx를 써야 할거 같네요.

[출처]
http://sar1rat0.tistory.com/category/%EB%81%84%EC%A0%81%EC%9D%B4%EB%8A%94%20%EC%BB%B4%ED%93%A8%ED%84%B0%20%EA%B3%B5%EB%B6%80
[퍼옴]

64bit와 32bit 에서 동시에 파일 사이즈 구하기
끄적이는 컴퓨터 공부 2009/01/12 22:52 by sar1rat0

파일 사이즈를 구하는 함수가 있습니다. 그 이름하여 GetFileSize();

API 인데 이름이 굉장히 직관적이어서 너무 좋습니다. 이런 함수를 사용할 때는 너무나 기분이 좋습니다.

그냥 적당히 때려 맞추면 비주얼 어시스트가 알아서 찾아주고, 그걸 구글에서 검색해서 사용 방법을 익히면

되기 때문이죠.


그런데 GetFileSize() 함수에 시대흐름 상 결함이 존재하였으니, 64bit에서 파일을 사이즈를 가져 오지

못합니다. MSDN을 보면 GetFileSizeEx() 함수를 사용하라고 권하고 있습니다. 그래서 한 번 살펴보았습

니다.


BOOL WINAPI GetFileSizeEx(
  __in   HANDLE hFile,
  __out  PLARGE_INTEGER lpFileSize
);


PLARGE_INTEGER 에 파일 사이즈가 들어갑니다. 저 파일타입은 union입니다. 궁금해서 살펴보았습

니다.

typedef union _LARGE_INTEGER {
    struct {
        DWORD LowPart;
        LONG HighPart;
    };
    struct {
        DWORD LowPart;
        LONG HighPart;
    } u;
#endif //MIDL_PASS
    LONGLONG QuadPart;
} LARGE_INTEGER;

typedef LARGE_INTEGER *PLARGE_INTEGER;

* LARGE_INTEGER Union

멤버 설명은 다음과 같습니다. 64bit는 QuadPart를 사용하고 32bit는 나머지를 사용합니다.

Members
LowPart
Low-order 32 bits.

HighPart
High-order 32 bits.

u
LowPart
Low-order 32 bits.

HighPart
High-order 32 bits.

QuadPart
Signed 64-bit integer.


그래서 이렇게 사용하면 되겠습니다.

PLARGE_INTEGER pLargeInteger;

if ( INVALID_FILE_SIZE != ::GetFileSizeEx(hFile, pLargeInteger) )
{
   // 64bit인 경우
    printf("64bit file size = %d\n", pLargeInteger.QuadPart );

   // 32bit인 경우
    printf("32bit file size = %d\n", pLargeInteger.LowPart );
}

//<----- 여기까지가 퍼온글이구요...

+ -

관련 글 리스트
61520 파일용량 구하기 니라카 1210 2010/06/13
61563     Re:파일용량 구하기 제리압빠. 3031 2010/06/15
61544     답변해주신 모든분들 감사합니다. 니라카 1090 2010/06/14
61525     Re:파일용량 구하기 Intotheblue 1589 2010/06/14
61523     Re:파일용량 구하기 doolrifeel 1445 2010/06/14
61521     Re:파일용량 구하기 Lyn 1618 2010/06/13
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.