Q&A

  • 델파이 2009, 7.0 버전차이 문자열 바이트 배열로 변환하기 관련 좀 봐주세요... ㅜ,.ㅡ
<!--CodeS-->
function TConvertStrToByteArray(strData: string): TByteDynArray;
var
  btLine: TByteDynArray;
  nLength: integer;
begin
  nLength := Length(strData);
  SetLength(btLine,nLength);
  Move(strData[1], PChar(btLine)^, nLength);
  result := btLine;
end;
<!--CodeE-->

위에 함수를 델파이 7.0 버전에서는 잘 사용을 했었습니다.

그런데 지금 델파이 2009 버전으로 작업을 진행하면서 저 함수를 그대로 사용을 하였는데 결과값이 이상하네요

변환값으로 'abcdefg' 을 넘겼는데요 7.0에 경우 {'97', '98', '99' , '100', '101', '102', '103'} 요케 값이

정상적으로 들어가는데 2009 경우 {'97', '0', '98', '0', '99' , '0', '100'}  요케 값이 들어와버리네요.. ㅜ,.ㅡ
2  COMMENTS
  • Profile
    델티즌 2009.08.28 01:05
    2009에서는 유니코드때문에 그런겁니다..
  • Profile
    땅쿠 2009.08.28 01:26
    네. 그렇네요.
    답변 감사하구요
    다음과 같이 수정하니까 정상적인 값이 넘어오네요.

    strData : String => strData : AnsiString

    <!--CodeS-->
    function TConvertStrToByteArray(strData: Ansistring): TByteDynArray;
    var
    btLine: TByteDynArray;
    nLength: integer;
    begin
    nLength := Length(strData);
    SetLength(btLine,nLength);
    Move(strData[1], PChar(btLine)^, nLength);
    // Move(strData[1], btLine[0], nLength);
    result := btLine;
    end;
    <!--CodeE-->