좋은 말씀 고맙습니다.
물론 볼포를 보면 정말 많은 고수분들을 볼 수 있지요.
영어... ㅋ... 정말 중요한 것 같습니다. 우리나라에서는 수학을 잘 하려고 해도 영어를 잘해야 한다고 생각합니다. 영어는 그만큼 중요한 것 같습니다. 뭐랄까 지식의 원천이 영어로 되어 있다고 보면 될까요? (뭐 미국사람들은 라틴어라고 할지도 모르겠지만요.)
저는 대학 다닐 때 조차도 영어의 중요성을 잘 몰랐었습니다. 몇년 전에 정말 영어를 모르면 안되겠다 싶어서 공부를 좀 하고 있는데, 생각처럼은 잘 되질 않네요.
앞으로도 계속 좋은 답변 부탁드립니다. (저도 열심히 하도록 하겠습니다.)
장성호 님이 쓰신 글 :
: 여기 고수님들 많은데...
: 저도 고수님들보면 어디서 저런것 알게되는지 궁금할때가 많습니다.
:
: 그리고 위에 답변드린 내용은 여기 볼포게시판에 다 있는 내용입니다.
:
: ..
:
: 2년전에 여기자유게시판에
:
커뮤니티를 이용한 나의 C++Builder공부 방법이라는 제목으로 글을 올린적이 있죠
:
http://www.borlandforum.com/impboard/impboard.dll?action=read&db=free&no=13366
:
: 1. 강좌/문서 그리고 팁/트릭을 처음부터 다 읽어본다.
:
: 2. 새로 올라오는 Q/A를 모두 읽어본다.
:
: 3. Q/A게시판 질문에 가능하면 모두 답변을 달아주려한다.
:
: 4. 자료실에 올려진 다른사람의 프로그램을 살표본다.
:
: 5. 모르는 것은 질문한다.
:
: 6. 강좌나 팁/트릭을 직접 만들어본다.
:
:
: 예전에는 강좌는 별로 만들어 올리진 못했는데..
: 요즘은 직접 강좌를 많이 쓰려구 노력하구요.. 그러면서 많이 공부가 되는것 같습니다.
:
:
: 개인적으로 요즘 한계를 많이 느끼는것이 있는데..
:
영어랑
수학 그리고
시스템(os)에 대한 지식 등이 있습니다.
:
: 특히 영어.. 쩝쩝..
: 위 세가지가 개발자로서 크게 성장할수 있는 기본기가 아닐까 하는생각이 드네요
:
: 그럼..
:
: 김민호.소중한꿈 님이 쓰신 글 :
: : 이런 많은 지식을 갖고 있는 것도 놀랍고, 또 이런 지식을 가지고 열심히 답변을 달아 주시는 것도 놀랍네요.
: :
: : 장성호님에게서는 C++ Builder 보다 공부하는 방법 자체를 좀 배우고 싶네요. 여하튼 좋은 정보 감사합니다. (--)(__)(--)
: :
: : 장성호 님이 쓰신 글 :
: : :
[AccessViolation원인]
: : : Design-time때 폼위에 컴포넌트나 컨트롤을 올려놓으면
: : :
: : : Form이 생성될때 자동으로 폼위의 모든 컴포넌트 객체가 생성됩니다.
: : :
: : : 하지만 직접 class를 설계하고 멤버변수로 TApdComPort 같은것을 두었을경우에는
: : : 직접 new로 생성해줘야 합니다.
: : :
: : : 님의 코드르 보면 AccessViolation이 발생했는데....
: : :
'Write of address' 부분을 보면
'00000078' 입니다.
: : :
: : : ComPort->AutoOpen = false 코드에서 0x00000078 번지에 write하려고 한것입니다.
: : :
: : : 이는 ComPort가 NULL( 또는 0 ) 인경우에 발생합니다.
: : : TApdComPort 클래스 시작부분에서 부터 0x78 Byte위치에 AutoOpen 변수가 있기때문이죠
: : :
: : :
: : : 즉 님의 경우
: : : TBmmsThread::ComportCnt() 함수에서
: : :
: : : ComPort->AutoOpen 등에 접근하기 전에 ComPort가 생성되어있는지 확인하고
: : : 객체를 생성해주시면 됩니다.
: : :
: : : void __fastcall TBmmsThread::ComportCnt()
: : : {
: : : //다음과 같이..
: : : if(ComPort==NULL)
: : : ComPort = new TApdComPort(NULL);
: : :
: : :
: : : ComPort->AutoOpen = false;
: : : //생략..
: : :
: : : }
: : :
: : : --------------------------------------------------------------------------------
: : :
[코드에 다른 문제들]
: : : 그리고 만약 TBmmsThread가 정말 쓰레드 클래스이구
: : : TBmmsThread::ComportCnt() 가 메인쓰레드가 아닌 다른 쓰레드에서 호출한다면
: : : TBmmsThread::ComportCnt() 함수에 몇가지 문제가 더 있습니다.
: : :
: : : 1. 첫째 쓰레드에서 Form1->BaudEdit->Text 나 Form1->ComportEdit->Text 등 GUI 객체의 변수에 직접 접근하셨습니다.
: : : 크게 TEdit는 edit를 상속받은것으로 text에 내용을 가져오려면
: : :
: : : GetWindowText(Edit->Handle,...) 또는 SendMessage(Edit->Handle , WM_GETTEXT , ...) 로 동작합니다.
: : : 메인쓰레드랑 동기되어서 동작하죠
: : :
: : : 뭐 큰문제는 아니지만 별로 바람직하지 않습니다.
: : :
: : :
: : : 2. 둘째 ShowMessage를 호출하셨는데...
: : : ShowMessage는 TForm을 상속받은 TMessageForm을 생성해서 ShowModal로 보여줍니다.
: : : VCL의 Form이나 Control을 멀티쓰레드 환경에 맞춰 설계되어잇지 않기때문에
: : :
: : : ShowMessage할때 에러가 날수도 있구 , 화면이 이상하게 나올수도 있습니다.
: : :
: : : 쓰레드에서 ShowMessage쓰는것은 문제가 있습니다.
: : :
: : : 정쓰고 싶으면 MessageBoxA 라는 win32api를 쓰셔야 됩니다.
: : :
: : :
: : : 그럼..
: : :
: : :
: : : Kenzuro 님이 쓰신 글 :
: : : : 쓰레드를 이용해서 시리얼 통신을 하는데요.. 쓰레드 사용하지 않고 컴포트로 시리얼 통신해서 정보 받는것은
: : : : 성공을 했습니다. 하지만 쓰레드를 사용해서 컴포트를 연결 하려고 하니 첨부파일과 같은 에러가 생깁니다.
: : : : 이것이 무엇에 대한 에러인지가 궁금합니다. APRO컴포넌트 사용해서 컴포트 만들었고요 폼에서 만들어서 하는게
: : : : 아니라 스레드에서 제가 선언해주면서 만들고 있습니다 Dynamic하게(?)ㅋ
: : : :
: : : : 이게 뭐를 잘못해서 나온 에러인지좀 알려주세요