Q&A

  • 10GB넘는 파일의 사이즈를 읽어오려면...
안녕하십니까..
10GB짜리 파일을 IndyTcp를 사용하여 보내려 하는데
파일 사이즈를 읽어오지 못하네요.

좋은방법이 있으면 한수 지도바랍니다.
1.98GB짜리 파일은 잘되는데 너무 크다보니 않되네요..
조언좀 부탁드립니다..
그럼 즐프하시구요~
4  COMMENTS
  • Profile
    최용일 2004.05.19 22:11
    안녕하세요. 최용일입니다.

    팁란에서 2G로 검색해보세요...

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

  • Profile
    김흥식 2004.05.20 01:23
    답변 감사드립니다.

    최용일님께서 말씀하신 자료를 보았는데 무슨말인지 알수가 없네요..T_T

    제가 하고자 하는것은 파일을 IndyTCP로 송신하는것을 하려고 하는데
    작은파일(2GB이하)은 잘됩니다...
    10GB이상을 보내려고 파일을 읽어서 버퍼 사이즈로 나누려고 하다보니
    파일사이즈를 읽어오질 못하거든요..

    그래서 파일사이즈만 잘읽어오면 될거 같아서 그럽니다.

    최용일님께서 말씀하신자료는 제가 미숙해서 이해를 못하겠습니다..


  • Profile
    최용일 2004.05.20 01:48
    안녕하세요. 최용일입니다.

    팁란에 해답이 다 들어 있는데요... 거기 FileSize란 메소드를 보시면 대강 아실건데... 쩝~~

    function GetFileSize64(const FileName: string): Int64;
    var
        FileHandle: LongWord;
        HiSize, LoSize: LongWord;
    begin
        Result := -1;
        FileHandle := CreateFile(PChar(FileName), GENERIC_READ, FILE_SHARE_READ, nil,
            OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
        LoSize := GetFileSize(FileHandle, @HiSize);
        CloseHandle(FileHandle);

        if (LoSize = $FFFFFFFF) and (GetLastError <> NO_ERROR) then
            Exit; // Raised Error

        Result := LoSize + (HiSize shl 32);
    end;

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

  • Profile
    김흥식 2004.05.20 03:16
    대단히 감사합니다..
    덕분에..해결했습니다.