C 자료형
typedef struct {
unsigned char event;
unsigned char subEvent;
unsigned short tnaEvent;
time_t eventTime; // 사용자 정의 자료형
unsigned userID;
unsigned reserved2;
} BSLogRecord;
이며 위의 자료형을 아래와 같은 델파이 자료형으로 변환 하려고 합니다.
type
PBSLogRecord = ^BSLogRecord;
BSLogRecord = record
event: Byte;
subEvent: Byte;
tnaEvent: Word;
eventTime: TDateTime; //사용자 정의 자료형
userID: Cardinal;
reserved2: Cardinal;
end {BSLogRecord};
위와 같이 변환이 가능한지 알고 싶습니다. ^^;
씨의 time_t형은 시간을 초단위로 저장하는 4바이트 정수형 Data Type입니다. 델파이의 TDateTime은 날짜와 시간을 저장하는 8바이트 실수형 Data Type입니다. 두개가 호환이 안됩니다. 델파이에서 선언하실려면 4바이트 정수형(Cardinal, LongWord)으로 선언하세요.
그리고 이렇게 다른 형태의 컴파일러간에 코드를 변환하실때는 레코드의 Byte Align을 주의해서 사용하셔야 합니다. 씨에서 어떻게 선언했는지는 잘 모르겠지만 #pragma pack(1)로 했다면 델파이에서 레코드 선언할때 packed를 붙여주셔야 레코드 크기가 정확히 맞습니다.
^^ 항상 즐코하세요...