Char --> AnsiChar
땅주인 님이 쓰신 글 :
: Byte스트림으로 된 데이터(시리얼에서 받은 데이터)가 있는데..이것을
: 부분 잘라내서 AnsiString으로 만드는게 최종 목표인데.. PASCAL에서 어케 하는 지... ?
:
: Lyn 님이 쓰신 글 :
: : 2009~Xe라면 Char 이 2byte 입니다.
: :
: : 땅주인 님이 쓰신 글 :
: : : 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으로 만들고 싶은데..
: : : 좋은 방법이 있는 지요?
|