|
산들바람님 감사합니다.
안그래도 어제 이것저것 찾아서 해보다가 어제 아래 내용을 발견하여 해결했네요^^
#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;
|