function Func_BangakToJungak(asSource: string): string;
var
cnt: Integer;
srcLen: Integer;
asc: Integer;
begin
Result := '';
srcLen := Length(asSource);
for cnt := 1 to srcLen do
begin
if ByteType(asSource, cnt) = mbSingleByte then
begin
asc := ord(asSource[cnt]);
//반각 영문 및 특수문자
if (asc >= 33) and (asc <= 126) then
begin
//전각으로 변환
asSource[cnt] := Chr(asc + 163128);
end;
end;
Result := Result + asSource[cnt];
end;
end;
팁게시판에 전각을 반각으로 변환하는 소스를 참고로
코딩했는데요...실제로 리턴값은 엉뚱한 값이 나옵니다.
어디가 잘못된 건가요? 답변 부탁드립니다.
전각문자는 두바이트인데...
asSource[cnt] := Chr(asc + 163128);
위와 같이 넣으시면 전각문자의 하위바이트만 들어가게 되죠...
그리고 더해주는 값이 잘못되었네요...
아래와 같이 해보세요...
function Func_BangakToJungak(Src: string): string;
var
Index: Integer;
Code: Integer;
begin
Result := '';
for Index := 1 to Length(Src) do
begin
if ByteType(Src, Index) = mbSingleByte then
begin
Code := Byte(Src[Index]);
Result := Result + Chr(Hi(Code + 41856)) + Chr(Lo(Code + 41856));
end
else
begin
Result := Result + Src[Index];
end;
end;
end;
^^ 항상 즐코하세요...