Q&A

  • 문자열 자르기...
주소 테이타를 10문자씩 끊어서 출력하려고 하는데

어떤 주소는 깨지는 문자없이 정상적으로 나오는데

어떤 데이타는 중간에 문자가 깨져서 나옵니다

정확하게 끊어서 했는데 이상하게 실행되는것 같아요...

원인이 뭔가요...

참고로 주소 테이타는 일정한 간격으로 있지 않습니다.

도와주세요...

즐거운 하루 되세요
3  COMMENTS
  • Profile
    정종필 2002.02.15 19:44
    ByteType 을 써 보세요...

    a := '가나x다라';

    이걸 한글이 깨지지 않고 8 byte 이내에서 자를려면..

    if ByteType(s, 8) = mbLeadByte Then s := Copy(a, 1, 7)
    else                                                s := Copy(a, 1, 8);

    이렇게 해 보세요..
  • Profile
    권희수 2002.01.15 19:48

    원인은 한글이기 때문이져
    예를 들면 "가나x다"는 7바이트구여
    여기서 4바이트를 자르면 가나x?이러케 한글이 잘려서
    이상하게 나옴니다..
    간편한 해결방법은  widestring을 쓰는것입니다.
    widestring은 한글을 1루 계산합니다.
    다음처럼 해보세여..
    var ss:widestring;
    begin
      ss := '가나x다라마바";
      ShowMessage(copy(ss,1,4));
    end;
    결과는 "가나x다"가 나옴니다.
  • Profile
    5782 2002.01.15 18:46

    주소데이타라면 한글로 되어있을 가망성이 많겠네여??
    한글데이타는 2바이트라 중간에 잘리게 되면 글자가 깨져나옵니다.
    간격두 일정하지 않다구 했는데...
    혹시 구분자가 있다면 그걸루 구분하시는게 어떨까 싶습니다.
    예를 들어 번지수의 100-20 이라든가...
    pos함수를 사용하시면 될겁니다..^^