제가 VC++ 을 주로 사용하는 터라.
델파이로 만든 프로그램을 갑자기 수정하라는데,,
딱, 미치겠습니다.
고수님들의 급 조언 부탁드립니다.
내용은 아래와 같습니다.
소켓 통신중에 리시브 받은 내용을 버퍼에 올려서
그것을 특정 구조체에 넣는데요,
이게 자꾸 자릿수가 밀려서요.
버퍼 내용은 이렇게 들어옵니다. 정상적으로..
[1] #174
[2] #174
[3] #174 --> 3byte 가 szTransactionCode
[4] #1 --> 1byte 가 czSendDeviceType
[5] #0
[6] #1 --> 2 byte 가 wSendDeviceSeq
[7] #5 --> 1 byte 가 czReceiveDeviceType
[8] #0
[9] #1 --> 2byte 가 wReceiveDeviceSeq
[10] #3
[11] #0
[12] #0
[13] #0
[14] #4
...............
아래가 구조체 내용인데요
TMsgHeader = record
szTransactionCode : array[1..3] of char;
czSendDeviceType : char;
wSendDeviceSeq : Word;
czReceiveDeviceType : char;
wReceiveDeviceSeq : Word;
czCommandType : char;
dwCommandKind : Longword;
dwDataLength : Longword;
szPrepareFilter : array[1..20] of char;
szSendTime : array[1..14] of char;
end;
이게 버퍼에서 구조체로 메모리 복사를 하고 나면
buffer : array [1..1024] of Char;
ZeroMemory( @buffer, 1024 );
CopyMemory( @MsgHeader, @buffer, sizeof(MsgHeader) );
이렇게 코드를 통화하면,,
szTransactionCode [#174, #174, #174]
czSendDeviceType #1
wSendDeviceSeq 256
czReceiveDeviceType #5
wReceiveDeviceSeq 769
......
szSendTime ['0','7','1','1'.............#0,#0 ]
이렇게 되버립니다.
wSendDeviceSeq 이놈의 값이 256 이라고 나오는데,, 이게 무슨 뜻입니까?
szSendTime 요넘 값이 정상적으로 들어오면 ['2','0','0','7', ....... '5','3']
이렇게 되야 하는데요.. 위에서 보시는 것처럼 앞으로 두칸 밀려서 마지막에 널 값이 두자리 들어옵니다.
이걸 당췌 알수가 없는데요..
시간은 촉박하고,,, 아~ 이걸 우째야합니까?
고수님들... 좀 부탁드립니다.
|