知/Delphi

한글 안깨지게 자르기

채수욱 2008. 8. 23. 01:46
WideString 을 사용하자는 겁니다.
한글을 자를때 깨진 1Byte 문자를 WideString 변수에 넣었다가 String 변수로 되받아서 Trim 처리를 하면
깨진 문자가 정리되는 꽁수를 활용한 팁입니다.

이 예제는 C++Builder 에서도 동일하게 적용됩니다.
 
procedure TForm1.Button1Click(Sender: TObject);
var
  TextString, TextTrim: String;
  TempWide: WideString;
  LenthCnt: Integer;
begin
  TextString := Trim(Edit1.Text);   //원본문자열
  LenthCnt := StrToIntDef(Edit2.Text,7);  //문자열 자를 위치
  if ( Length(TextString) > LenthCnt) then
  begin
    TempWide := Copy(TextString,1,LenthCnt); //원본문자열을 잘라서 WideString 변수에 담는다.
    TextTrim := TempWide; //WideString 에서 String 변수로 되받는다.
    Edit3.Text := Trim(TextTrim); //Trim 처리를 하여 깨진 문자를 없앤다.
    LenthCnt := Length(Edit3.Text); //나머지 문자열 처리를 위해 잘라진 문자열의 길이를 알아본다.
    Delete(TextString,1,LenthCnt); //원본문자열에서 잘리진 문자열만큼 잘라버린다.

    TempWide := TextString; //나머지 원본문자열을 WideString 변수에 담는다.
    TextTrim := TempWide; //WideString 에서 String 변수로 되받는다.
    Edit4.Text := Trim(TextTrim); //혹시 있을 문제를 업애기 위해 Trim 처리를 한다.
  end else begin
    Edit3.Text := TextString;
    Edit4.Text := '';
  end;
end;
출처:델마당 그대만을 님의 글