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
[36960] Re:Re:Re:바이너리 파일 좀 읽어주세요.
smleelms [smleelms] 1342 읽음    2004-08-24 15:50
일단 파일을 읽는 함수는 여러가지가 있습니다. 그중에 편한것을 사용하시면 될거구요..
예를 든다면...

    byte buff[1024];
    TFileStream *infs;
    try
    {
        try
        {
            infs = new TFileStream("c:\\dl05005.dat", fmOpenRead);
            infs->Seek(0, soFromBeginning);
            infs->ReadBuffer(buff, sizeof(buff));    // 파일사이즈만큼 또는 블럭사이만큼이 되겠지요
        }
        catch(const Exception& e)
        {
            Application->MessageBox(e.Message.c_str(), "File Open/Read Error", MB_OK|MB_ICONERROR);
        }

    }
    __finally
    {
        delete infs;
    }


그런데 실제로 올려주신 파일을 위의 예제처럼 buff에 읽어들인다고 하더라도...
저넘들을 어떻게 해석해야 되는지는 파일저장시 했던 과정의 역으로 해석이 되어야 한다는 겁니다.

즉.. 올려주신 내용이 11122120040820235000000.~~~
이렇게 되더라도.. 저내용이 그냥 integer 데이터인지.. float 데이터인지.. 아니면
struct {
    int aaa;
    float bbb;
    char ccc;
}
처럼 저장된 데이터인지 알 수가 없다는겁니다. 올려주신 데이터를 보면 숫자(물론 그냥 char일수도 있습니다.)뿐 아니라 dot에 알파벳까지 있으니 더 알수가 없지요.

그리고 또 다른 측면에서 보면 지금 제시해주신 원본 데이터가 다른 프로그램에서 읽어들인것을 보여주신것 같은데요..
그렇다면 cnt 파일과 dat 파일이 서로 연관되어 있다고 볼 수도 있습니다.
( .cnt 파일은 가장 많이 사용되기로는 "Windows 또는 기타 시스템, 도움말 색인 등의 목적으로 사용되는 콘텐츠 파일"이라고 소개되기도 하네요..)

그렇다면 더더욱 저장할때의 포맷을 알아야만이 제대로 읽어들일 수가 있겠지요.


30억 님이 쓰신 글 :
: 답변감사드립니다.
: 지금 파일을 읽으면 원본 데이터가
: 11122120040820235000000.002P00007.0U000.001P000.040P0000.40P00000.0P000.055P000.015P0000.01P00000.0P0000013D00001.6M00023.8C1000.0021017.0001000.0021000.0431000.411000100020001001700010000##
: 이런식으로 죽 나열되어 있는 데이터 입니다. 그런데 제가 이 바이너리 파일을 만든게 아니라 다른데에서 만든 파일을 제 프로그램에서 읽어들여서 아스키로 바꿔주고 싶거든요.
: 그런데 제가 초보라 바이너리 파일을 읽는 방법을 잘 모르겠습니다.
: 읽어도 이상한 값으로만 깨지고. 어떻게 해야 읽을수 있을까요? 그냥 읽으면 된다고는 하는데 그 방식을 몰라서 .... 부탁드립니다.
:
: smleelms 님이 쓰신 글 :
: : 음.. 바이너리 파일 2개를 첨부하셨는데요..
: : 바이너리로 읽는 방식이 중요한게 아니라, 이 바어너리 데이터가 어떤 포맷으로 저장된, 무엇을 의미하는 데이터인가가 중요하다고 하겠지요..
: :
: : 실제로 올려주신 바이너리 데이터를 메모리에 읽어들여도 그데이터들을 어떤 데이터 형태로 저장(대입)하느냐에 (ex : char, float, int , struct...) 따라서 다를테니까요..
: :
: : 무엇보다도 올려주신 바이너리 파일이 어떠한 형태로 저장이 된것인지를 아셔야, 읽어들여도 디코딩이 되겠죠.
: :
: : 물론 아신다면 질문에 그 부분에 대한 언급이 있었겠지만, 바이너리 파일 2개 올리시고 읽을 수 없냐고 하시길래 노파심에 적어봅니다. (제가 잘 몰라서 그럴수도 있습니다.. 양해해 주시길.. ^^;)
: :
: : 그럼.. 부디 원하시는바를 이루시길...
: :
: :
: : 30억 님이 쓰신 글 :
: : : 바이너리 파일을 읽어주세요.
: : : 이 파일을 읽어야 하는데 잘 안되네요.
: : : Q&A에 나온 방식으로 읽었는데 원래 데이터가 이상한건지
: : : 아니면 바이너리 읽는 방식이 다른 방식이 있는지 알고 싶습니다.
: : : 고수님들 한번 읽어봐주세요.부탁드립니다.

+ -

관련 글 리스트
36952 바이너리 파일 좀 읽어주세요. 30억 1084 2004/08/24
36957     Re:바이너리 파일 좀 읽어주세요. smleelms 1200 2004/08/24
36959         Re:Re:바이너리 파일 좀 읽어주세요. 30억 1124 2004/08/24
36961             Re:Re:Re:바이너리 파일 좀 읽어주세요. 김광수 1463 2004/08/24
36960             Re:Re:Re:바이너리 파일 좀 읽어주세요. smleelms 1342 2004/08/24
36962                 Re:Re:Re:Re:바이너리 파일 좀 읽어주세요. bigdream 1309 2004/08/24
36964                     Re:Re:Re:Re:Re:바이너리 파일 좀 읽어주세요. smleelms 1171 2004/08/24
36965                         정말 정말 감사드립니다. bigdream 915 2004/08/24
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.