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

자유게시판
세상 살아가는 이야기들을 나누는 사랑방입니다.
[24450] 아 Firemonkey~~~~
망치 [mangchy] 7953 읽음    2014-02-06 18:32
제목 없음

XE5 C++Builder에서 FireMonkey HD로 시리얼 통신(CPort 약간 수정) 프로그램을 짜고 있습니다.

간단하게 테스트할때는 잘 되더군요.

실제 아래 화면처럼 구성해서요.

 

제가 개발하던 윈도우상에서는 잘 되더군요.

한글 Win7 32비트, 64비트, XP 32비트에서요.

 

========

이제 프로그램을 실제 운용할 영문 윈 7에서 돌리려니 divide by zero 메시지가 계속 뜨더군요.

원격 디버깅은 시도해보았으나 부산에 있는 PC와 인천 송도에서 원격 디버깅은 잘 안되더군요.

아~ 뭔가 제 소스에서 문제가 있나 싶어서 계속 트레이스 추적해보았습니다.

그 결과 Form Create, Show부분도 다 빼보고 해보니 그래도 에러가 뜨더군요.

 

결국 추적결과 Label의 ShadowEffect를 넣었던 부분을 지우니 에러가 없어지더군요.

 

========

개발 프로그램이 실행된 상태에서 다른 윈도우가 앞에서 움직이면 개발 프로그램 화면이 업데이트가 안되고 잔상이 남더군요.

이것도 결국 윈도우 메시지 잡아서 강제로 화면 업데이트를 먹였습니다.

 

========

현재도 뭔가 버그가 있다고 연락이 오네요...

으 괜히 이걸로 했어... ㅡ,.ㅡ

 

 

아직 어떤 버그가 나올지 무섭군요.

처음에 쓸때는 좋았는데 쓰면서 아직 안정화가 덜 된건지 아니면 제가 아직 익숙하지가 않아서인지

무섭군요. 이미 개발해서 프로그램은 그걸로 세팅이 된다는데요...

 

개인적으로 하는 프로젝트라 프로그램 기능도 간단하고 해서 처음으로 파이어몽키를 프로젝트에 적용해본건데

간단한 프로그램인데도 불구하고 이거 생각도 못하는 난관이 기다리고 있을거 같아 엄청(?) 기대됩니다.

 

===============================================================================================

결국 파이어몽키 포기하고 VCL로 변경해서 프로그램 다시 제작 => 정상작동되네요.

파이어몽키 사용했다가 이상한 컴퓨터 만나서 아주 혼쭐났네요..

소지영(몽인) [neonim]   2014-02-06 19:40 X
divide by zero의 경우는 Exception에 걸리는 경우 인지라 비교적 쉽게 추적이 가능하지 않나요?
추적이 힘들면, 유레카 같은 로그 컴포넌트나 log4delphi같은거를 써도 되고요...

잔상 남는거 같은 경우는... 불편 하겠네요...
망치 [mangchy]   2014-02-06 21:03 X
코드가 아예없이 Label에 ShadowEffect만 넣어도 그렇고, ComboBox만 올려놓고 클릭하면 에러 뜨고 하는군요.
그래서 혹시나 해서 그 OS를 다른 컴퓨터에 깔아서 테스트 했더니 에러가 안뜹니다.
알아보니 컴퓨터가 노르웨이 나라의 특수 컴퓨터라네요...
아무래도 그래픽 카드와 FireMonkey 문제인거 같습니다. ㅡ,.ㅡ
오랑캐꽃 [oranke]   2014-02-07 10:56 X
참고가 되실까 싶어 몇 자 적어봅니다.

예전 델마당 게임게시판에, DX를 사용하면 실수연산이 평소와 달리 된다는 푸념글이 있었습니다.
DX가 구동될 때 유틸리티 DLL 등에서 실수연산 방식을 게임에 적합하도록 변경하기 떄문이었죠.
여기에는 divide by zero 예외를 끄는 것도 포함됩니다.
유틸리티 DLL 없이 날로 만든 어플에서 이걸 동일하게 맞출때는 대충 Set8087CW($133F) 라고 해줍니다.
델파이가 사용하는 기본값은 System 유니트 안에 Default8087CW 로 정의되어 있습니다.

파이어몽키는 윈도에서는 DX를 사용해 GPU 가속을 받기 때문에 기본적으로 이 예외가 꺼질 것이라 보입니다.
또 그걸 기반으로 실수연산에 별다른 예외처리 없이 작업했을 꺼구요.
하지만 어딘가 다른 곳에서 이 설정을 변경하면 당연히 문제가 되겠지요.

Math유니트에 GetPrecisionMode(), GetRoundMode(), GetExceptionMask() 등 실수연산 상태를 확인하는
함수들이 있으니 체크해보시구요...

제 경우 게임내의 3D 연산 외의 돈이나 날짜를 계산할 때 좀 귀찮지만 이렇게 사용하고 있습니다.

var
  LastCW: Word;

  LastCW := Get8087CW;

  Set8087CW(Default8087CW);
  try
 
    ... 이런저런 처리

  finally
    Set8087CW(LastCW);
  end;
망치 [mangchy]   2014-02-07 11:52 X
오랑케님의 말씀 감사합니다. 항상 많은 도움이 되는군요.

FireMonkey로 새프로젝트 만들어서 코드는 하나도 안넣고 comboxbox에 아이템 몇개 넣고
실행파일 만들어서 그 컴퓨터에서 실행시키면 콤보박스를 클릭하면 에러 메시지 발생하더군요.

프로그램이 복잡하지 않은거라 파이어몽키로 머리 지끈거리게 할거 없을거 같아서
다행히 UI부분이 아닌 처리들은 클래스로 만들어 놓아서 약간의 헤더 부분만 수정해서
어제 새벽까지 겨우 만들어 그 컴퓨터로 보내니 아주 깔끔하게 실행 되었습니다.

간단한거라 fmx좀 배워봐야겠다하고 시작했던것이 뭐 이것저것 머리아프게 하는것들이 자잘하게 있더군요.

그래도 오랑케님 덕분에 저런 팁들도 알게 되어 좋네요.
다음에 fmx 도전할때 참고하도록 하겠습니다.
땅주인 [heaven2]   2014-02-07 17:51 X
C++ Builder XE5로 프로젝트 진행 중인데.. 불안합니다. 24시간 운용성을 보장해야 하는 S/W인데..
불안한 마음에 한 표 더합니다.
망치 [mangchy]   2014-02-10 09:17 X
저도 중요한 프로젝트는 2007에서 하고, 간단하게 운용되는 프로젝트에 한해서만 그 이상의 버젼에서 해보고 있습니다.
항상 새로운 버젼이 나올때마다 그래도 거의 갈아타곤 했는데 2007에서부터 더 이상 업그레이드가 쉽지가 않네요.
회사에서는 그래도 XE5버젼으로 업그레이드를 하긴 했지만 프로젝트에는 아직...

오늘 VirtualStringTree SVN 리스트보니 XE6버젼에 대한 준비를 했더군요.
슬슬 XE6버젼이 나오려고 하는건지. 다음 버젼에서는 제 노트북에서 C++Builder가 컴파일이 되어야할텐데요.
컴파일이 안되어서 VMware에 설치해서 트라이얼로 해야했거든요...이게 뭐하는짓인지. 에휴~
자꾸 이런식이면 C#으로 ~~~ 가기전에 제대로좀 ....

결국 파이어몽키 이름처럼 원숭이해인 2016년까지 기다려야되는건 아니겠죠?
안짐 [dexter]   2014-02-10 10:05 X
화면 갱신 안돼는 문제는 파이어몽키가 아니더라도 빌더에서 appearance 옵션에서 스타일 적용했을때 그런증상 발생하죠 ㅠㅠ
어떤 컴은 이상없고 어떤 컴은 화면갱신안되고....

+ -

관련 글 리스트
24450 아 Firemonkey~~~~ 망치 7953 2014/02/06
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.