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
[68912] CreateFile과 ReadFile
LeeD [] 1739 읽음    2013-01-03 17:08
안녕하세요.

제가 파일 생성해서 Read하는 속도를 측정하는

오픈소스 하나를 구해서 빌더에 적용시키는 중인데요.

static HANDLE hFile;
static volatile bool WaitFlag;
static int BufSize = 1024 * 1024;
static int Loop = 100 * 1024 * 1024;
static char* buf = NULL;

void TMain::Sequential()
{
    int count;
    double score, maxScore;
    int i, j;
    DWORD readSize, writeSize;
    bool result;

    double StartTime, Time;      <--- 제가 추가한 부분

//////////////////////////////////////////////
// Read Test
//////////////////////////////////////////////
    score = 0.0;
    maxScore = 0.0;
    for(j = 0; j <= 5; j++)
    {

        hFile = CreateFile(
                                "C:\\TestCreate.bin",   <--- 제가 추가한 부분
                GENERIC_READ|GENERIC_WRITE,
                0,
                NULL,
                OPEN_ALWAYS,    <--- 오픈소스에서는 "OPEN_EXISTING" 였는데 생성이 안되서 바꿈
                FILE_ATTRIBUTE_NORMAL|FILE_FLAG_NO_BUFFERING|FILE_FLAG_SEQUENTIAL_SCAN,
                NULL);

        count = 0;
        WaitFlag = TRUE;
        StartTime = GetCurrentTime();   <--- 제가 추가한 부분

        for(i = 0; i < 100; i++)
        {
            result = ReadFile(hFile, buf, BufSize, &readSize, NULL);
            if(result)
            {
                count++;
            }
            else
            {
                CloseHandle(hFile);
                return ;
            }
        }
        SetFilePointer(hFile, 0, NULL, FILE_BEGIN);

        CloseHandle(hFile);
        Time = GetCurrentTime();   <--- 제가 추가한 부분

        if(j != 0)
        {
            score = count * (BufSize / 1000.0) / (Time - StartTime);
            if(score > maxScore)
            {
                maxScore = score;
            }
            Memo1->Lines->Strings[0] = (String)score;   <--- 제가 추가한 부분
        }
    }
}
void __fastcall TMain::Button1Click(TObject *Sender)
{
    Main->Sequential();
}

이렇게 해놓고 실행을 시키면 ReadFile에서 리턴값이 false로 나와서 걍 끝나버려요ㅜ

어디가 잘못 됬나요?

+ -

관련 글 리스트
68912 CreateFile과 ReadFile LeeD 1739 2013/01/03
68913     Re:CreateFile과 ReadFile Lyn 2181 2013/01/03
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.