FireMonkey Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
FireMonkey 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
델마당
볼랜드포럼 광고 모집

FireMonkey Q&A
[53] 파이어몽키 TMemo 버그. 기본적인 처리도 제대로 못구현하는 볼랜드..
박영호 [] 2177 읽음    2013-09-06 17:57
볼랜드 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 의 텍스트를 날려버렸고 버퍼는 "" 로 대체되어 있어야
하는데 이전입력이 느닷없이 튀어나온다는 것입니다. 버퍼 초기화 버그가 존재함..

이런 기초적인 버그가 존재한다는 사실이 진짜 볼랜드 C++ 로 전향하는 사람들을 짜증나게 만드는 요소
인거 같음.. VC++ 에서는 최소한 이런 초짜적인 버그는 안나타나는데.. 볼랜드에서는 이런 초짜적인 버그가
산재해있는게 여전한거 같음.. Borland C++ 6.0 에서도 짜증나는 기초적인 버그들이 있어서 갖다 버렸는데
XE4 나와서 좀 쓸만해졌나 싶어서 봤더니 여전히 이런 잔잔한 치명적 버그들이 존재하는군요.. -_-;

+ -

관련 글 리스트
53 파이어몽키 TMemo 버그. 기본적인 처리도 제대로 못구현하는 볼랜드.. 박영호 2177 2013/09/06
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.