Move함수로 값을 복사를 했는데.. 값이 영 이상합니다.
뭐가 잘못되었는 지?
procedure TForm2.Button1Click(Sender: TObject);
var
Buff : array [0..50] of Byte;
TimeInfo : array [0..15] of char;
PhoneNumber : array [0..15] of char;
sTimeInfo : AnsiString;
sPhoneNumber: AnsiString;
iSize : Integer;
iSize2 : Integer;
iSize3 : Integer;
begin
FillChar(Buff, Sizeof(Buff), #0);
FillChar(TimeInfo, Sizeof(TimeInfo), #0);
FillChar(PhoneNumber, Sizeof(PhoneNumber), #0);
Buff[ 0] := $61; //a
Buff[ 1] := $62; //b
Buff[ 2] := $63; //c
Buff[ 3] := $64; //d
Buff[ 4] := $65; //e
Buff[ 5] := $66; //f
Buff[ 6] := $67; //g
Buff[ 7] := $68; //h
....//중략
iSize := Sizeof(Buff);
iSize2 := Sizeof(TimeInfo); // 32나오는 데 뭥미? 유니코드로 잡은것인가요?
iSize3 := Sizeof(PhoneNumber); //32나오는데 뭥미?
move(Buff[3], TimeInfo, iSize2); // 값을 복사하는데..전혀 엉뚱한 값을 합니다. 2byte씩 처리하는 것 같구요.
move(Buff[20], PhoneNumber, iSize3);
최종적으로는 Byte된 배열의 값을 잘라서 AnsiString에 넣으려고 하는데..중간 코드로 Byte배열의 값을
Char 배열에다가 복사를 하려는 데 이상한 동작을 하는 데요.. 유니코드 같기도 하고..2byte씩 처리를 하니..
문제가 어딘 지..좀 알려주시면 감사하겠습니다..
추가: TimeInfo, PhoneNumber배열이 데이터를 2byte단위로 잘라서 처리를 해서 이런 증상이 나오네요.
char로 선언했는데 왜 이러는 것인 지요?
그리고, Byte로 배열로 되어 있는 데이터에서 부분 부분 잘라서 AnsiString으로 만들고 싶은데..
좋은 방법이 있는 지요?
|