1. String -> WideChar[] 변환

개념 : MultiByteToWideChar API를 이용한다.

소스 :
    var
        data : String;
        someunicode : array of widechar;
        len : integer;
    begin
        data := '안녕하세요.';
        len := StrLen(PChar(data));
        MultiByteToWideChar(CP_ACP, 0, PChar(data), -1, @someunicode[0], len);
    end;


2. String <-> WIdeString
개념 : 델파이에서는 자동 형변환 되므로 신경 쓸 필요 없음

소스 :
델코 민성기 님 작성
http://www.delphikorea.com/board/zboard/view.php?id=qa&page=1&sn1=&divpage=1&sn=off&ss=on&sc=on&keyword=유니코드&select_arrange=headnum&desc=asc&no=20996

var

WStr : WideString;

SStr : String;



TempStr1, TempStr2 : String;

i : Integer;

begin

WStr := '얼러리꼴러리!';
SStr := WStr;
//이렇게 해도 결과 같음
//SStr :='얼레리꼴러리!';
//Wstr := WIdeString(SStr);


for i:= 1 to Length(WStr) do
begin
TempStr1 := TempStr1 + '$' + IntToHex(Ord(WStr[i]), 2);
if i <> Length(WStr) then TempStr1 := TempStr1 + ', ';
end;

for i:= 1 to Length(SStr) do
begin
TempStr2 := TempStr2 + '$' + IntToHex(Ord(SStr[i]), 2);
if i <> Length(SStr) then TempStr2 := TempStr2 + ', ';
end;

ShowMessage(
Format(
'유니코드 "%s", 길이 %d'#13'%s'
+#13#13+
'일반문자 "%s", 길이 %d'#13'%s',
  [WStr, Length(WStr), TempStr1, SStr, Length(SStr), TempStr2]
)
);

end;

Posted by Gu Youn
,