자유롭게 질의 및 응답을 할 수 있는 게시판입니다. 개발자 여러분의 답변이 큰 도움이 됩니다.
- 제품설치/등록 오류 문의: 설치/등록 Q&A 이용 (제품 구매 고객 한정)
C++ Builder 파이어몽키에서 한글입력시 심각한 버그.
2013.09.07 02:53
볼랜드 C++ 빌더로 Firemonkey 프로젝트를 3D 로 선택해서 만듭니다.그리고 볼랜드 유투브 강좌에서 2D 컴포 깔때 TLayer3D 를 먼저 깔라고나오는데 그 기본 강좌에서 보는 것 처럼 레이어를 하나 깔아둡니다.그리고 그 위에 2D 컴포넌트인 TMemo 컴포넌트 두개를 놓습니다.
그리고 한개를 입력 다른 한개를 출력용도로 이름을 대충 지어놓은 뒤에아래와 같은 코드를 사용하면 버그가 재현됩니다.
//---------------------------------------------------------------------------void __fastcall TForm3D_main::MemoInputKeyUp(TObject *Sender, WORD &Key, System::WideChar &KeyChar, TShiftState Shift){ // 엔터 입력시 채팅 출력 창에 메시지 출력. if (Key == VK_RETURN) { MemoOutput->Lines->Add(MemoInput->Text); MemoInput->Text = L""; }}
위의 내용은 엔터를 누르고 키를 때는 순간 TMemo 박스에 입력한 한글을 다른쪽 TMemo 박스에 뿌리고입력한 TMemo 박스쪽은 값을 날립니다.(입력하고 나서 엔터치면 텍스트가 사라지고 초기화되는 입력기부분임)
이때, 발생하는 증상은 만약 TMemo 한쪽에서 입력으로써 타이핑한 내용이 "가나다라마바사" 라고 했을때엔터를 치고 나서 다시 입력할려고 "가나다abc" 라고 치는 순간 다음과 같이 TMemo 에 이상한 글자조합이나타나기 시작합니다.(타이핑하는 순간에 입력쪽에서 툭 하니 튀어나옴..)
가나다가나다라마바abc
위에 처럼 가나다abc 라는 입력이 이전에 입력했었던 가나다라마바라는 내용이 나오며 중복됩니다.위에 보시면 MemoInput->Text 로 TMemo 의 텍스트를 날려버렸고 버퍼는 "" 로 대체되어 있어야하는데 이전입력이 느닷없이 튀어나온다는 것입니다. 버퍼 초기화 버그가 존재함..
댓글 0
C++ Builder 파이어몽키에서 한글입력시 심각한 버그.
2013.09.07 02:53
볼랜드 C++ 빌더로 Firemonkey 프로젝트를 3D 로 선택해서 만듭니다.
그리고 볼랜드 유투브 강좌에서 2D 컴포 깔때 TLayer3D 를 먼저 깔라고
나오는데 그 기본 강좌에서 보는 것 처럼 레이어를 하나 깔아둡니다.
그리고 그 위에 2D 컴포넌트인 TMemo 컴포넌트 두개를 놓습니다.
그리고 한개를 입력 다른 한개를 출력용도로 이름을 대충 지어놓은 뒤에
아래와 같은 코드를 사용하면 버그가 재현됩니다.
//---------------------------------------------------------------------------
void __fastcall TForm3D_main::MemoInputKeyUp(TObject *Sender, WORD &Key, System::WideChar &KeyChar, TShiftState Shift)
{
// 엔터 입력시 채팅 출력 창에 메시지 출력.
if (Key == VK_RETURN)
{
MemoOutput->Lines->Add(MemoInput->Text);
MemoInput->Text = L"";
}
}
위의 내용은 엔터를 누르고 키를 때는 순간 TMemo 박스에 입력한 한글을 다른쪽 TMemo 박스에 뿌리고
입력한 TMemo 박스쪽은 값을 날립니다.(입력하고 나서 엔터치면 텍스트가 사라지고 초기화되는 입력기
부분임)
이때, 발생하는 증상은 만약 TMemo 한쪽에서 입력으로써 타이핑한 내용이 "가나다라마바사" 라고 했을때
엔터를 치고 나서 다시 입력할려고 "가나다abc" 라고 치는 순간 다음과 같이 TMemo 에 이상한 글자조합이
나타나기 시작합니다.(타이핑하는 순간에 입력쪽에서 툭 하니 튀어나옴..)
가나다가나다라마바abc
위에 처럼 가나다abc 라는 입력이 이전에 입력했었던 가나다라마바라는 내용이 나오며 중복됩니다.
위에 보시면 MemoInput->Text 로 TMemo 의 텍스트를 날려버렸고 버퍼는 "" 로 대체되어 있어야
하는데 이전입력이 느닷없이 튀어나온다는 것입니다. 버퍼 초기화 버그가 존재함..