Q&A

  • string->widechar->byte operation변환 문제입니다.
프로그램 주요 내용입니다..

var
SOutline: string;
lac_utf : array [0..32700] of char;
wData : array [0..32700] of wchar;

procedure
     SOutline :=      '<mos>'+#13#10 +
                      '<mosID>Video</mosID>'+#13#10 +
                      '<ncsID>GVGENPS</ncsID>'+#13#10 +
                      '<roStorySend>'+#13#10 +
                      '<roStorySend>'+#13#10 +
                      '</mos>'+#13#10;
     fillchar(lac_utf, sizeof(lac_utf), #0);
     fillchar(wData, sizeof(wData), #0);
     StrPCopy(lac_utf, SOutline);
     MultiByteToWideChar(CP_ACP,0,lac_utf,length(lac_utf),wData,sizeof(wData));

     for i := 0 to SizeOf(wData) do   <--문제의 byte operation
       chSwap := widechar((((ch shr 8) and $00ff) or ((ch shl 8) and $ff00)));

      Socket.Send(wData,sizeof(wData));

프로그램에서 해결 해야하는 건 SOutline값을 widechar형의 lac_utf로 변환한 다음 lac_utf의 byte 배열을 앞의 8bit와 뒤의 8bit를 바꿔주는 것까지 해야 합니다..
현재 WIDECHAR형으로 바꾸는 건 했다라고 여겨지는데 배열을 바꾸는 게 타입이 달라서 그런지 잘 되질 않습니다..
몇 일동안 고생하고 있는데 경험이 있으신 분들이나 고수님들 조언부탁드립니다.
감사합니다..

6  COMMENTS