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
[67810] Re:Re:c++ 빌더 2009에서 구조체 얼라이먼트 설정법
최남영 [] 1163 읽음    2012-07-25 09:00
산들바람님 감사합니다.
안그래도 어제 이것저것 찾아서 해보다가 어제 아래 내용을 발견하여 해결했네요^^
#pragma pack(1)
typedef struct tagWorkAck{
    BYTE ReceiverObj;
    BYTE TransferObj;
    BYTE CmdCode;
    BYTE DataTagSize;

    BYTE SubCmdCode;   //0
    BYTE SubLenth;     //1

    BYTE  BlockSize;   //2
    WORD  Address;     //3,4
    WORD  YY;          //5,6
    BYTE  MM,DD,Hh,Mm,Ss; //7,8,9,10,11
    CHAR  User[8], Repairs[60];   //12,    20
}tagWOKRACK;
#pragma pack()

관심가져 주셔서 진심으로 감사드립니다.^^

산들바람 님이 쓰신 글 :
: #pragma pack(1)
: typedef struct tagWorkAck{
:      :
: }tagWOKRACK;
:
: 하시면 이후 부터는 이 타입으로 선언된 모든 구조체 변수는 1 바잍트 단위로 얼라인 됩니다.
: 저도 이것 땜시 고생을 좀 해서리
: 물론 위의 숫자를 바꾸시면 그 숫자만큼 어라인이 됩니다.
:
: msdn에 있더군요. ^^
:
: 최남영 님이 쓰신 글 :
: : 통신으로 받은 데이타를 구조체로 받아서 데이트럴 뽈을려하는데 중간에 한바이트가 사라집니다.
: : 데이타 얼라이먼트를  byte로 설정해야 할 것 같은데
: : 2009에서 project->option->Delphi compiler->Record field alignment를 byte하였습니다.
: : 그런데 결과는 똑같구요...
: : 설정하는 방법이 있을까요??
: :
: :
: : typedef struct tagWorkAck{
: :     BYTE ReceiverObj;
: :     BYTE TransferObj;
: :     BYTE CmdCode;
: :     BYTE DataTagSize;
: :
: :     BYTE SubCmdCode;  
: :     BYTE SubLenth;    
: :
: :     BYTE  BlockSize;   
: :     WORD  Address;    =>여기 한바이트가 앞으로 밀려 사라짐
: :     WORD  YY;         
: :     BYTE  MM,DD,Hh,Mm,Ss;
: :     CHAR  User[8], Repairs[60]; 
: : }tagWOKRACK;

+ -

관련 글 리스트
67777 c++ 빌더 2009에서 구조체 얼라이먼트 설정법 최남영 1047 2012/07/19
67807     Re:c++ 빌더 2009에서 구조체 얼라이먼트 설정법 산들바람 1198 2012/07/24
67810         Re:Re:c++ 빌더 2009에서 구조체 얼라이먼트 설정법 최남영 1163 2012/07/25
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.