빌더 3.0으로 시작해서 6.0까지 오직 하나의 툴을 고집하며 줄기차게
개발해 왔는데 최근들어 너무 어이없는 빌더 컴포넌트의 버그들을 보면서
조금 답답한 심정을 올립니다. 이 글을 읽고 계신 분들 중에 혹시 같은 경험을
했거나 혹은 할지 몰라서 제가 경우를 몇자 적어 봅니다.
2번의 경험은 이미지 컴포넌트를 사용했을 때 발생했습니다.
증상은 동일한 코드로 컴파일한 실행화일에 동일한 데이타를 가지고 처리했을 때
PC에따라 2가지의 결과가 나타나는 경우입니다.
분명 내가 쓰던 PC에서 문제가 없어 넘겨준 코드가 다른 PC에서 다른 결과를 나타내고
있는 것이었습니다.
이번에 경험한 것을 SpinEdit 컴포넌트를 사용하고나서 발생한 문제 입니다.
이것도 PC마다 다른 경우가 나타나는지는 테스트 할 수 없었지만 SpinEdit를 EditBox로
바꾸면서 문제가 없어 졌습니다.
Form1->spinedit1->Value = g_LD.x ;
Form1->spinedit2->Value = g_LD.y ;
Form1->spinedit3->Value = g_SUB.x ;
Form1->spinedit4->Value = g_SUB.y ;
위와 같은 코드가 있었는데 위의 코드는 쓰레드에서 바뀌는 위치를 표시하는 부분이었는데
특정한 순간에 2번째 라인을 실행을 하게 되면
g_LD.x = 4, g_LD.y = 1 의 값을 가지고 있었을 경우
Form1->spinedit1->Value -> 4 , g_LD.x -> 4
Form1->spinedit2->Value -> 1, g_LD.y -> 4 메모리의 값이 이런식으로 값이 변합니다.
3,4 번째 라인에는 문제가 물론 없고요..
디버그를 하면서 CPU의 어셈코드를 따라가 보니 SpinEdit의 SetText 멤버 함수를 호출하는
부분에서 spinedit1->Value 값이 g_LD.y 로 들어가고 있었습니다. 황당 그 자체였습니다.
첨부로 올린 소스는 위의 예는 아니고 2번째 경험했던 문제의 코드 입니다.
원래 컴포넌트를 개발하려다가 제가 컴포넌트 만들어 본적이 없어서 일단 급한김에 이미지
컴포넌트를 이용해서 만들어 사용하던 것이었는데
Graph라는 버튼을 누르면 데이타 화일을 읽어서 4개의 그래프를 그립니다.
Print라는 버튼을 누르면 화면을 프린트 할때 토너절약을 위해 그래프 바탕을 흰색으로
바꾸는 역할입니다.
그리고 4개의 체크박스는 각각의 그래프를 숨기거나 나타내기 위해 사용됩니다.
문제는 체크박스를 사용했을 때 그래프의 바탕화면의 색에는 영향을 미치지 않고 단순히
그래프만 사라지게 하는 것인데 이게 PC에 따라 특정 PC에서는 바탕을 희게 만들어 버립니다.
한번 코드를 보시고 혹시 제가 잘못한 부분이 있으면 찾아서 지적해 주시면 감사하겠습니다.
|
꽤 긴 잠수... ^^;;
지금 업무중이라(10시까지 정상 업무시간입니다) 집에 가서 안쓰러지면 좀 보겠습니다...