본문 바로가기

쓰기

기능요?

아무것도 없습니다.

그냥 2바이트로 변환 기능.


단 차이가 있다면

FixLine 내부에 있어도 잘 동작한다는거죠

소스는 기본 ATPlugin 프레임에서 후처리부만 이렇게 변경하면 됩니다.

 const char * szDiv="_-/_";
const int nDivLen = strlen(szDiv);

BOOL  __stdcall PostTranslate(LPCSTR cszInKorean, LPSTR szOutKorean, int nBufSize)
{
    // TODO: 번역 후처리를 한다.
    // 특별한 처리를 하지 않더라도 문자열을 복사해 돌려주어야 한다.

    int nIdx1=0;
    int nIdx2=0;

    while(cszInKorean[nIdx1]!='�')
    {
        if(cszInKorean[nIdx1]==szDiv[0] &&
            strncmp(cszInKorean+nIdx1,szDiv,nDivLen)==0)
        {
            strcpy(szOutKorean+nIdx2,szDiv);
            nIdx1+=nDivLen;
            nIdx2+=nDivLen;
            continue;
        }

        if( 0x20 <= (BYTE)cszInKorean[nIdx1] && (BYTE)cszInKorean[nIdx1] <= 0x7E )
        {    
            if(' ' == cszInKorean[nIdx1])
            {
                szOutKorean[nIdx2++] = (char)0xA1;
                szOutKorean[nIdx2++] = (char)0xA1;
            }
            else
            {
                szOutKorean[nIdx2++] = (char)0xA3;
                szOutKorean[nIdx2++] = (char)(0x80 + cszInKorean[nIdx1]);
            }
            nIdx1++;
        }
        else if(IsDBCSLeadByteEx(949,BYTE(cszInKorean[nIdx1])))
        {
            szOutKorean[nIdx2++] = cszInKorean[nIdx1++];
            szOutKorean[nIdx2++] = cszInKorean[nIdx1++];
        }
        else
        {
            szOutKorean[nIdx2++] = cszInKorean[nIdx1++];
        }
    }
    szOutKorean[nIdx2]='�';

    
    // 작업 성공시 TRUE, 실패시 FALSE 반환
    return TRUE;
}



조회 수 :
34250
등록일 :
2008.12.23
17:22:06
엮인글 :
https://arallab.hided.net/4664/8a6/trackback
게시글 주소 :
https://arallab.hided.net/board_archives/4664
List of Articles