Q&A

  • 형변환에 대한 질문입니다....
계속 질문만하게 되는 것 같군요....

고수님들 죄송합니다...

현재 모니터링용 프로그램을 개발하고 있는데요

모니터링 전문을 받아서 파싱을 하는데 도저히 해결이 안되는 부분이 있어서리

이렇게 질문을 드립니다...

먼저 전문 포맷은 다음과 같습니다...
---------------------------------------------------------------------------------------------------------------
IP Address : 4Byte(XXX.XXX.XXX.XXX을 각 1Byte로 전송)
Port           : 1Byte(1에서 16의 숫자를 1Byte로 전송)
OnTime      : 2Byte + 9Byte(2Byte는 1970년 1월 1일을 기준으로 일수, 9Byte는 시분초밀리초)
OffTime      : 2Byte + 9Byte(2Byte는 1970년 1월 1일을 기준으로 일수, 9Byte는 시분초밀리초)
---------------------------------------------------------------------------------------------------------------

그리고 전송을 담당하는 서버측에서는
sprintf(buf, "%c%c%c%c%c%u%s%u%s", 203, 233, 233, 233, PortNbr, SystemDateValue, OnTime, SystemDateValue, OffTime);
로 메세지를 만들어서 전송을 합니다...

그리고 수신을 담당하는 클라이언트측에서는
구조체로 수신을 받도록하였습니다...
---------------------------------------------------------------------------------------------------------------
<!--CodeS-->
type
  TMonitorTime = record
    SystemDate : Word;
    SystemTime : array[0..8] of Char;
end;
type
  TMonitorMessage = record
    IPAddress: array[0..3] of Byte;
    Port     : Byte;
    OnTime   : TMonitorTime;
    OffTime  : TMonitorTime;
end;
<!--CodeE-->
---------------------------------------------------------------------------------------------------------------
로 만들어서
---------------------------------------------------------------------------------------------------------------
IntToStr(strIPAddress1)+'.'+IntToStr(strIPAddress2)+'.'+IntToStr(strIPAddress3)+'.'+IntToStr(strIPAddress4) + ' [' + IntToStr(intTerminalServer) + '][' + IntToStr(intPort) +'] ' + strOnTime + ' / ' + strOffTime;
---------------------------------------------------------------------------------------------------------------
로 출력을 하면 OnTime과 OffTime측에서 밀리는 현상이 발생합니다....
도대체 어느부분에서 잘못이 있는 걸까요....

오늘 오후내내 이것 때문에 정신이 하나도 없습니다...

잘못된 부분이 있으면 알려주시고요

이 방법말고 더 좋은 방법이 있다면 가르쳐 주세요... 예제도 포함.... *^^*

부탁드리겠습니다....

그럼 남은 하루 즐거운 시간 보내세요.....

PS. 개발툴은 D7입니다....
2  COMMENTS
  • Profile
    최용일 2005.10.09 19:47
    안녕하세요. 최용일입니다.

    델파이의 자동정렬때문에 그런것 같네요...

    record대신에 packed record를 쓰세요...
    <!--CodeS-->
    TMonitorTime = packed record
        ...
    end;
    <!--CodeE-->
    ^^ 항상 즐코하세요...

  • Profile
    송성환 2005.10.10 20:34
    가르쳐 주신대로 하니까 정상적으로 나오는군요....

    그런데 죄송하지만.... 델파이의 자동정렬에 대해서 알고 싶은데요....

    계속 질문만 드리는 것 같군요.... 죄송합니다....

    역시 알고 싶은 것이 무지 많은 델초보자랍니다...

    그럼 즐거운 하루되세요....