Q&A

  • Record 형으로 저장된 파일 읽고 쓰기
Record 형으로 저장된 파일을 읽고 쓸려고 합니다.

헌데 문제는 Record type이 혼용되어 있는 파일입니다.



예를들어

Type

TRec1 = record

AA : string[50];

AB : string[4];

end;



TRec2 = record

SA : integer;

SA : integer;

end;



이라는 Type이 정의되어 있고 디스크에 있는 파일은



TRec1 형식의 data가 한번 써여져 있고, TRec2 형식이 500번

반복되어 있습니다.



이것을 읽어들이는 방법을 알고자 합니다. 가능하면 상세하게..

또한 위와 같은 형식으로 저장하는 방법도... 가능하다면.





나름대로 해볼려고 아래와 같이 해보았습니다만 잘안되는군요.

먼저 변수로 아래를 선언하고

Var

FHandle1 : File of TRec1;

DRec1 : TRec1;



FHandle2 : File of TRec2;

DRec2 : TRec2;



....

....



프로시져로

AssignFile(FHandle1 ,'c:테스트파일.tst');

Reset(FHandle1);



Read(FHandle1,DRec1);



이런식으로 읽을려고 하니까, 첫번째 형식은 읽은것 같은데

두번째 형식을 읽기 위해서 어떤식으로 coding해야 할지

모르겠군요.

아니면 방법이 애초부터 틀렸는지 ....





1  COMMENTS
  • Profile
    김영대 1999.06.18 03:29
    디제이 께서 말씀하시기를...

    > Record 형으로 저장된 파일을 읽고 쓸려고 합니다.

    > 헌데 문제는 Record type이 혼용되어 있는 파일입니다.

    >

    > 예를들어

    > Type

    > TRec1 = record

    > AA : string[50];

    > AB : string[4];

    > end;

    >

    > TRec2 = record

    > SA : integer;

    > SA : integer;

    > end;

    >

    > 이라는 Type이 정의되어 있고 디스크에 있는 파일은

    >

    > TRec1 형식의 data가 한번 써여져 있고, TRec2 형식이 500번

    > 반복되어 있습니다.

    >

    > 이것을 읽어들이는 방법을 알고자 합니다. 가능하면 상세하게..

    > 또한 위와 같은 형식으로 저장하는 방법도... 가능하다면.

    >

    >

    > 나름대로 해볼려고 아래와 같이 해보았습니다만 잘안되는군요.

    > 먼저 변수로 아래를 선언하고

    > Var

    > FHandle1 : File of TRec1;

    > DRec1 : TRec1;

    >

    > FHandle2 : File of TRec2;

    > DRec2 : TRec2;

    >

    > ....

    > ....

    >

    > 프로시져로

    > AssignFile(FHandle1 ,'c:테스트파일.tst');

    > Reset(FHandle1);

    >

    > Read(FHandle1,DRec1);

    >

    > 이런식으로 읽을려고 하니까, 첫번째 형식은 읽은것 같은데

    > 두번째 형식을 읽기 위해서 어떤식으로 coding해야 할지

    > 모르겠군요.

    > 아니면 방법이 애초부터 틀렸는지 ....

    >

    >



    안녕하세요 김영대입니다



    record 로 파일을 핸들링 한다는건 이진 처리가 되기 때문에

    레코드의 형태가 어떻든 파일 포인터의 증가에만 신경쓰면 됩니다

    근데 문제는 TRec1과 TRec2 의 두가지를 Read() 로 읽어야 하는데

    Read() 로 읽으려면 하나의 파일에 대해 하나의 record 형태만

    지원되는 문제입니다



    FHandle1, FHandle2 의 두개의 파일 포인터를 만드시면 두개의

    포인터는 완전히 따로 동작하므로 원하시는 목적을 얻기는 힘들고

    파일 포인터(file of Byte 형태)를 하나만 만들고 BlockRead() 을

    사용하여 뒤의 size 를 TRec1과 TRec2 의 크기만큼 변경해가면서

    읽으시면 될듯합니다



    그리고 또하나는 TRec1 한번 TRec2 500 번이라는 순서가 꼭 일치하지

    않을 수 도 있는 문제입니다

    그래서 대부분은 각 record 타입에 flag 를 두어서 다음에 어떤

    형태의 record 타입이 오는지등의 정보를 넣어두시면 좋을듯 합니다

    • 왕초보
    • 1999.06.18 02:30
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 안치봉
      1999.06.18 03:16
      왕초보 께서 말씀하시기를... > 툴바에서 image는 알겠는데요. > hotimages가 뭐하는건지 모르겠어요. >...
    • dreamy
    • 1999.06.18 02:15
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 안치봉
      1999.06.18 03:18
      dreamy 께서 말씀하시기를... > Delphi4 Professional 버전을 가지고 있습니다. > 이제 델파이를 좀 배워...
    • dreamy
      1999.06.22 03:09
      안치봉 께서 말씀하시기를... > dreamy 께서 말씀하시기를... > > Delphi4 Professional 버전을 가지고 ...
    • 김상균
    • 1999.06.18 02:06
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 김영대
      1999.06.18 03:08
      김상균 께서 말씀하시기를... > 진짜 초보입니다. > > 버턴을 눌렀을때, local의 default email client...
    • 한재영
    • 1999.06.18 00:09
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 안치봉
      1999.06.18 01:13
      strgrid1.cells[1,1]을 그냥 참조하시면 됩니다. 쩝... 한재영 께서 말씀하시기를... > 스트링 그리드...
    • 조민경
    • 1999.06.17 23:31
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 김영대
      1999.06.18 03:37
      조민경 께서 말씀하시기를... > FTP에서 이어받기를 할려면 어떻게 해야하죠? > > (TFTP Component로도...
    • 안치봉
      1999.06.18 00:23
      조민경 께서 말씀하시기를... > FTP에서 이어받기를 할려면 어떻게 해야하죠? > > (TFTP Component로도...
    • 조민경
      1999.06.18 00:48
      안치봉 께서 말씀하시기를... > > 안녕하세요 > > 글쎄요.. 제가 알기로는 원래 FTP 나 그런계통(WWW...
    • 오인균
    • 1999.06.17 23:21
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 안치봉
      1999.06.18 00:26
      오인균 께서 말씀하시기를... > 델파이4로 명함관리 프로그램을 작성중인데요.. > 질문이 있습니다.. > ...
    • 이현신
      1999.06.17 23:17
      이현신 께서 말씀하시기를... > 델파이에서 아주 간단한 콘솔 프로그램을 만들었는데.. > 중간에 어떤 작...
    • 왕초
    • 1999.06.17 22:03
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 최석기
      1999.06.17 22:13
      왕초 께서 말씀하시기를... > MDIChild폼이 모두 Minimized되어 있는데요.. > 이 MDIChild폼을 MDI 메인 ...
    • 지팡이
    • 1999.06.17 21:29
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 신인재
      1999.06.17 22:45
      쩝 MCI함수를 써서 플레이를 해야 될꺼같습니다.. 자료실에 제가 올려놓은 MciPlay.pas가 있습니다. ...
    • 디제이
    • 1999.06.17 21:11
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 김영대
      1999.06.18 03:29
      디제이 께서 말씀하시기를... > Record 형으로 저장된 파일을 읽고 쓸려고 합니다. > 헌데 문제는 Record...
    • 최석기
      1999.06.17 20:28
      최기훈 께서 말씀하시기를... > 최석기님이 보내주신 답변 잘받았습니다. > 하지만 TNotifyIconData에 해...
    • 이호선
    • 1999.06.17 18:26
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 최석기
      1999.06.17 19:16
      이호선 께서 말씀하시기를... > 안녕하세요 > Chartfx콤퍼넌트를 사용하는데 배포 컴퓨터에 클래스가 등...
    • 북해
    • 1999.06.17 18:02
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 최석기
      1999.06.17 19:10
      북해 께서 말씀하시기를... > 안녕하세요. 동적생성한 버튼을 해체하려하는데 잘 안되네요. 단순히 하나의...
    • 최기훈
    • 1999.06.17 18:00
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 최석기
      1999.06.17 19:12
      최기훈 께서 말씀하시기를... > Window를 구현하는데 궁금한 점이 있어서 이렇게 글을 올립니다. > 작업 ...
    • 한 재
    • 1999.06.17 17:40
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 문창완
    • 1999.06.17 07:39
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 최석기
      1999.06.17 17:47
      문창완 께서 말씀하시기를... > 지금 소리가 나는 사운드(Wav 파일)를 어떻게 죽이죠...? > 알려주세요. ...
    • 이호선
    • 1999.06.17 06:34
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 최석기
      1999.06.17 17:38
      이호선 께서 말씀하시기를... > 안녕하세요. > ActiveX에서 Chartfx를 사용하는데 배포할때 클래스가 등...