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

델파이 Q&A
Delphi Programming Q&A
[3479] >질문< 터보파스칼화일을 텔파이(DB)화일로:추가설명
shs007 [ ] 1125 읽음    1998-06-30 23:48
관심을 보여주셔서 대단히 고맙습니다.
 
  다음은 터보 파스칼로 작성된 레코드 구조입니다.

  type  work_record = record
                        code  : string[5];
                        Sname : string[24];
                        Spec  : string[12];
                        Unt   : string[5];
                        CP    : LongInt;
                        GB1   : byte;      
                        GB2   : byte;      
                        BIGO  : string[10];
                      end;

  var  w_R : Work_record;

  위 구조로 작성된 터보파스칼화일(binary)을 델파이에서 똑같은
  레코드구조로 읽어 보았지만 첫번째레코드 이상하더군요!
  위 w_R의 size를 검사해보면
 
   TURBO PASCAL 에서는 : SizeOf(w_R) = 67

   델파이 에서는 : SizeOf(w_R) = 72

  위와 같이 값이 차이가 있던데 변수의 size가 영향이 아닐지

  그래서 아래와 같이 델파이로 작성해보았더니

 

procedure TForm1.BitBtn1Click(Sender: TObject);
VAR  FROMFILE :FILE;
     NUMREAD  :integer;
     BUFFER   :WORK_RECORD;
     j : Word;
begin
  ASSIGNfile(FROMFILE,'DATA.DAT');
  RESET(FROMFILE,67);
  // ------------------------------------------------------
  // 
  // 여기서 67은 레코드size : Sizeof(buffer)를 하면 72가
  // 되어 원래 터보에서 작성된 레코드길이와 틀려서...
  //
  //-------------------------------------------------------
  if IORESULT = 0 then
  begin
    Repeat
      BlockRead(FROMFILE,BUFFER,1,NUMREAD);
      Memo1.Lines.Add(Buffer.code+' === '+
                      Buffer.Sname+' === '+
                      Buffer.Spec +' === '+
                      IntToStr(Buffer.Cp) +' ==== '+
                      IntToStr(Buffer.GB1)+' === '+
                      IntToStr(Buffer.Gb2));
    UNTIL NUMREAD = 0;
    CLOSEfile(FROMFILE);
  end;
end;


   위 source의 실행결과 모든레코드가 정상적으로 loading이 되는데
   String변수외 LongInt와 Byte로 선언된 변수는 이상이 값이 출력
   되더군요,
      다시한번 관심 부탁드립니다.   고맙습니다.

 
 


+ -

관련 글 리스트
3479 >질문< 터보파스칼화일을 텔파이(DB)화일로:추가설명 shs007 1125 1998/06/30
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.