C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
분야별 포럼
C++빌더
델파이
파이어몽키
C/C++
프리파스칼
파이어버드
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

자유게시판
세상 살아가는 이야기들을 나누는 사랑방입니다.
[15190] 델파이 2009
김범진 [shinnara] 5141 읽음    2008-10-09 12:56
프로그래밍이 주업은 아니지만 밥줄을 위해 어느 정도의 컴퓨터 자동화가 필요하여 프로그래밍을 독학하던 중 볼랜드 c++과 비주얼 베이식 6을 넘어 델파이에 매진하고 있습니다.
꼭 필요한 기능만 간단하게 구현해 쓰다 보니 프로그래밍 일반에 대한 깊은 지식이 부족하고 엑셀 매크로 정도보다 약간 위의 수준에 머물고 있습니다.
델파이 200x 시험판으로 근근이 연명하다가 윈도우즈 비스타를 쓰게 된 마당에 델파이 새 버전도 나왔겠다 백 만원 조금 넘는 가격이 업무 전체 비용에 비해 그리 큰 금액은 아니기 때문에 2009를 선뜻 구매해 쓰고 있습니다.
프로모션 어쩌구 해서 좀 싸게 파나 보다 했는데 주문하고 좀 알아 보니 그다지 싼 가격도 아니더군요.
게다가 슬슬 쓰다 보니 내가 마루타가 된 건 아닌가 하는 느낌을 종종 갖습니다.
2007로 작업해 둔 것들 가운데 수정 없이 제대로 실행되는 게 적어도 제 제작물들 가운데에는 거의 없습니다.
수정이 필요한 부분들 가운데 상당수는 델파이의 버그로 의심되지만 제 실력이 미천하여 어디가서 선뜻 외쳐 보지도 못 하고 있습니다.
아무튼 2007이 그립지만 이제 와서야 죽은 자식 불x 만지기죠.

오늘 저를 귀찮게 한 건 2009의 소스 브레이크포인트 기능입니다.
2007까지는 코드 에디터의 왼쪽 거터에 파란 도트로 소스 브레이크포인트를 지정할 수 있게 되어 있지만 2009에는 그런 게 안 나오더군요.
그거야 뭐 중요한 기능은 아니고 대부분 어디에 찍어야 하는지 분명하니까 그냥 넘어가겠는데요.
브레이크포인트를 찍어도 빨간 도트가 안 나타나서 첨엔 좀 헤맸습니다.
이게 찍힌 건지 뭔지 나중에 보니 해당 줄이 보라색으로 변하더군요.
그게 소스 브레이크포인트의 흔적이었습니다.
거트에는 아무 표시도 남지 않습니다.
문제는 이런 내용이 도움말에 전혀 업데이트되어 있지 않다는 겁니다.
온라인 도움말에는 여전히 2007까지의 내용만 있습니다.
2009를 설치할 때 오프라인 도큐먼트를 도움말로 쓸 것인지 온라인 헬프를 도움말로 쓸 것인지 고르는 옵션이 있었던 거 같은데 나중에 설정을 바꿀 수 있고 온라인 헬프가 업-투-데이트 버전이라고 하길래 당연히 온라인 헬프를 골랐습니다.
다시 오프라인 도큐먼트로 바꾸려고 보니 어떻게 하는 건지 암만 찾아 봐도 모르겠네요.
암튼 이것도 중요한 건 아니고 제가 답답한 건 다음의 내용입니다.

2007에서는 대부분 아시다시피 주석문에도 브레이크포인트가 걸렸습니다.
프로시저로 구성된 특정 이벤트 자체가 발생하는지 여부를 확인하기 위해서는 프로시저 내용을 아직 작성하기 전에 프로시저를 만들어 놓고 begin과 end 사이에 //로 주석 처리만 하고 해당 프로시저의 내용을 작성할 때가 될 때까지 일단 두는 경우가 흔합니다.
근데 2009에서 이 작업을 죽어라 해 봤더니 이벤트에서 브레이크포인트가 안 걸리는 겁니다.
이벤트가 왜 안 걸리나 한참을 상관도 없는 소스들을 봤지만 2007에서 쓰던 것과 같은 내용들이었죠.
속으로 이상하다, 이상하다를 되뇌다가 혹시 주석은 건너 뛰나 싶어서 다음과 같은 변수 선언을 했습니다.

procedure TForm1.FormCreate(Sender: TObject);
var
  i: Cardinal;
begin
  i := 1; -> 브레이크포인트
end;

그리고 본문에 브레이크포인트를 걸었습니다.
근데 이걸 건너 뛰며 브레이크포인트가 먹지 않았습니다.
그럼 뭐지, 또 한참을 헤매다가 혹시나 하여 다음과 같이 해 봤더니 걸리더군요.

procedure TForm1.FormCreate(Sender: TObject);
var
  i: Cardinal;
begin
  i := 1;
  Form1.Caption := IntToStr(i);
end;

위와 같이 Form1.Caption := IntToStr(i); 구문을 넣으면 안 걸리던 그 앞 줄에서도 걸립니다.
변수 선언을 private로 빼면 Form1.Caption := IntToStr(i); 구문이 없어도 i := 1; 구문에서 브레이크가 작동합니다.

뭐가 잘못됐다고 여겨지는 건 초보인 저만의 착각일는지 ...
아제나 [azena]   2008-10-09 13:06 X
얼리어답터는 언제나 고통이 따르는 법이예요...
원효 대사의 깨달음을 머릿속에 생각하시며 한동안 베타테스트 한다는 기분으로 쓰시면 많은 도움이 되리라 믿습니다. ^^
'소프트웨어는 완제품이 아니라 반제품이다.'라는 명언이 생각나는군요.
류종택 [ryujt]   2008-10-09 13:09 X
2009를 구매하신 분도,
2007로 라이센스를 다운 그레이드 해주지 않을까요?
델파이 7의 경우에는 그렇게 해줍니다.
동시에 사용하는 것은 아니고 하나만 인정됩니다.
나중에 복구가 가능한 지는 잘 ㅡ.ㅡ;;
Lyn [tohnokanna]   2008-10-09 13:09 X
procedure TForm1.FormCreate(Sender: TObject);
var
  i: Cardinal;
begin
  i := 1;
  Form1.Caption := IntToStr(i);
end;

에서
Form1.Caption := IntToStr(i); 를 뺏을때 브레이크 포인트가 안걸리는것은 정상입니다.

i를 전혀 쓰고있지 않기때문에 최적화 과정에서 아예 빼버린거죠.
거기에 걸고싶으시면 옵티마이즈(최적화)를 꺼버리세요
류종택 [ryujt]   2008-10-09 13:10 X
브레이크 포인트 문제는 린군이 대답했네요 ㅡ.ㅡ
한 참 쓰고 있는데 ㅡ.ㅡ
류종택 [ryujt]   2008-10-09 13:11 X
소스 코드 상에서 명시적으로 사용하지 않는 변수나 함수 등은 컴파일 시
모두 제거 됩니다.

그런데 유독 제거 안되는 넘도 있습니다.
그넘들은 published에 선언된 넘입니다.

virtual 메소드도 아마 사용하지 않아도 제거되지 않고 컴파일 될 것 입니다.
류종택 [ryujt]   2008-10-09 13:12 X
제거 되었는 지 아닌지 알아보는 방법은
컴파일하고 소스 왼쪽에 파란 점이 붙어있는냐 없느냐를 보시면 됩니다.
양병규 [bkyang]   2008-10-09 13:33 X
제거 된 넘들은 폰트 색을 좀 바까서... 눈에 확~ 띄게 했으면 좋겠다는..... --;
함수 내 변수들도 변수가 메모리에 할당이 되었다가 사용하지 않으면 자동으로 없어지는데... 없어진 변수나 아직 준비가 안된 변수들도 색을 좀 바까서 눈에 확~ 띄게 했으면 좋겠더군요... 이게 왜 값이 안나오지..하고 한참을 헤매게 만든다는...
김범진 [shinnara]   2008-10-09 13:53 X
고맙습니다.
최적화 설정을 해제하니 잘 걸리네요.
브레이크포인트 리스트를 보니 주석문은 브레이크포인트 설정이 불가능하다고 표시되어 있네요.
2007에서는 했던 거 같은데 이것도 설정으로 바꿀 수 있는 건지 찾아 보겠습니다.
2007의 경우 파란 도트가 표시 되며 설정 가능 여부 파악이 쉬웠는데 이젠 정신 바짝 차리고 코딩해야겠습니다.
김태선 [cppbuilder]   2008-10-09 14:55 X
함수에 // 만들어 브레이크포인트 거는 방법도 좋지만
저는 함수명 자체에 브레이크 포인트를 겁니다.
함수 내용이 있던 없던 상관 없죠.
박지훈.임프 [cbuilder]   2008-10-09 15:27 X
잘못 기억하고 계시는 부분이 적지 않은 것 같습니다. 앞서 Lyn님이 말씀하신 대로, 최적화 설정이 켜져있는 상태에서는 실제로 동작하지 않는 코드는 모두 브레이크 포인트가 잡히지 않습니다. 이건 델파이 2007을 포함해서 델파이의 모든 버전에서 마찬가지였습니다.

마찬가지로, 주석문에서는 브레이이크 포인트가 잡히지 않는 것도 역시 델파이의 모든 버전에서 마찬가지입니다. 또, 거터 부분에 파란 점이 나오는 것은 최초 한번 컴파일은 되어야 나타납니다. 구체적으로 말씀하신 것들 중에서 델파이 2009에서만 이상하거나 다르게 동작하거나 하는 부분은 하나도 없습니다.

기존 소스가 컴파일되지 않는 경우가 잇는 것은 스트링이 예전의 AnsiString에서 UnicodeString으로 바뀌었고 그로 인해 여러가지 크고 작은 소스 변경 작업이 필요해진 것입니다. 여기 델파이 강좌란에 보시면 2009에서 스트링과 문자 타입들을 어떻게 처리해야 하는지에 대한 번역한 시리즈 강좌가 있으니 참고하시기 바랍니다.
주정섭 [jjsverylong]   2008-10-09 15:59 X
델 2007 에서 컴파일 하기 전에 소스 편집기에서 주석문에 브레이크 포인터를 걸면, 걸리는 것 처럼 표시되지만, 막상 컴파일 하면 주석문에는 브레이크 포인터가 안걸리는 것으로 다시 표시됩니다. 이는 컴파일을 해봐야만 그 라인이 실행 라인인지 아닌지를 판단할 수 있기 때문입니다. 이는 다른 델 버전도 마찬가지 일것입니다.

그런데, 주석문에 브레이크 포인터를 걸 일이 당췌 왜 필요한지 모르겠습니다. 주석문에 브레이크 포인터를 걸수 있다면 과연 무슨 장점이 있을지도 아리송합니다만....

상당수의 데드 코드, 즉 실행시에 최적화 등에 의해서 배제되는 코드는, 컴파일시 경고나 워닝 등으로 대부분 표시됩니다. 불행히도 많은 델 개발자들이 컴파일러 경고를 상당히 가소롭게 여기고 잘 안보는 경향이 있는 듯 합니다.
달빛 [jsp0915]   2008-10-09 16:32 X
>> 2007까지는 코드 에디터의 왼쪽 거터에 파란 도트로 소스 브레이크포인트를
>> 지정할 수 있게 ...
cnPack 을 설치해서 그런감  잘되는거 같은뎅... 한번 설치해보세요
2009에서는 현재 unstable 버전으로 사용하고 있는데 별다른 에러가 없네요.
개인적으로 2007보다 2009가  편리하던뎅..
툴팔레트 검색시 한글 영타 변환하다 보면 불편했던 문제도 Search 가 생겨서
좋고.. 암튼 2009 에 한표..

+ -

관련 글 리스트
15190 델파이 2009 김범진 5141 2008/10/09
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.