Q&A

  • 영문과 한글이 혼용된 String값에서의 MidStr을 하려면?

제목 그대로 입니다

예) var Text: String;

     Text:= '123 멍게말미잘해삼 abcd';

      ShowMessage(MidStr(Test, 12, 4));

이렇게 하면 깨져서 Display되거든요...

올바른 방법이 있는지요??

도와 주십시요.!!!

3  COMMENTS
  • Profile
    skysoft 2003.10.23 23:00
    아래 예처럼 한글1자 사이를 자르지 않게 하는 함수를 만들어 썼거든요.
    참고하세요.

        flag := false;
        for i := 1 to ShowLen do begin
          if (ord(ShowStr[i]) > 127) and (not flag) then
            flag := true
          else
            flag := false;
        end;
        if flag then //한글의 시작부분이면
          ReturnStr := Copy(ShowStr, 1, ShowLen - 1) //한글1자(2바이트) 사이를 자르지 않는다
        else
          ReturnStr := Copy(ShowStr, 1, ShowLen);


  • Profile
    김용화 2003.12.19 20:23
    내용 감사합니다.


  • Profile
    연기훈 2003.10.23 22:56
    함수 하나 만드셔야 합니다.

    한글부분을 체크해서
    한글이면 1글자 더 복사해야 하지요...

    제가 프로젝트 하면서 만들었더

    소스 입니다. 참조하세요!!

    function HanCopy(sFrom : string; iSPoint : integer; iCutLength : integer;var NextPoint : integer):string;
    var
       sResult : string;
       i : integer;
    begin
       if sFrom <> '' then begin
          i := iSPoint;
          while (i <= iSPoint + iCutLength - 1) and (i <= Length(sFrom)) do begin
             if ByteType(sFrom, i) = mbLeadByte then begin
                sResult := sResult + copy(sFrom, i, 2);
                i := i + 2;
             end else begin
                sResult := sResult + copy(sFrom, i, 1);
                i := i + 1;
             end;
          end;

          NextPoint  := i;
       end else begin
          NextPoint  := -1;
       end;

       Result := sResult;
    end;