
프로그래머
해당되는 글 13건

C언어 배열 초기화 함수와 주의사항
C언어 배열 초기화 함수 두 가지 C언어에서 배열을 초기화할 때 memset()와 bzero() 중 어떤 함수를 사용하시나요? bzero()가 간단해서 편하기도 하지만, 함수 이름이 뭘 하는지 명확해서 소스 코드를 이해하는데 도움을 줍니다. 그러나 이런 장점이 있다고 해도 memset()을 사용하는 것이 좋습니다. 왜일까요? bzero()가 "deprecated 함수"이기 때문인데요, deprecated의 뜻이 "더 이상 사용되지 않는"다는 뜻을 보더라도 하위 호환을 위해 제공되는 것이어서 bzero()보다는 memset()을 사용하는 것을 권합니다. 소프트웨어 기능 중에 "be deprecated"로 언급되어 있다면 더 좋은 것이 나와서 앞으로 이 기능이 없어질지 모른다는 뜻으로 쓰인다는 것을 생각하면..
나도 프로그래머 크로미움 웹브라우저 만들기
Lazarus와 CEF4Delphi 프리 파스칼로 윈도우 프로그램을 만들 수 있는 Lazarus 통합 개발 환경 프로그램에 CEF4Delphi 컴포넌트를 설치하면 크로미움 브라우저를 만들 수 있습니다. CEF4Delphi 컴포넌트의 이름에서 알 수 있듯이 Delphi에서도 사용이 가능한데요, Delphi7에는 설치하지 못했습니다. 지원하는 변수 타입 때문인데요, Delphi7 상위 버전이어야 가능한 것 같습니다. Lazarus로 크로미움을 만드는 방법을 알아보겠습니다. Lazarus에 대한 상세한 내용은 여기 링크를 참고하세요. 라자루스(lazarus) 설치 ▲ Lazarus 홈페이지에서 [Download Now] 버튼을 클릭합니다. 페이지가 바뀌면서 잠시 기다리면 컴퓨터 환경에 알맞은 설치 파일을 다운..
라자루스 조건 컴파일 방법(Lazarus Conditional compilation)
Lazarus Conditional compilation 라자루스에서 디버깅을 위해 DebugSever 툴로 문자열 메시지를 전송해서 출력하는 방법을 소개했는데요, 프로젝트 옵션에서 디버거 옵션을 꺼도 DebugServer로 메시지를 전송하는 SendDebug 함수는 계속 남아서 DebugServer로 전송합니다. SendDebug 함수를 겨우 몇 개 사용했다면 제거하겠지만, 여기저기 많이 사용했다면 삭제하기 어렵죠. uses dbugintf; procedure TForm1.btnCloseClick(Sender: TObject); begin SendDebug( '종료 버튼을 클릭했습니다.'); Close; end; procedure TForm1.btnCopyWindowClick(Sender: TObjec..
나도 프로그래머 라자러스 이벤트란?
윈도우 프로그램의 이벤트 이해 오픈 소스 통합 개발 환경 라자루스의 3 번째 글입니다. 이번에는 라자루스 프로그램의 중요한 개념 중에 하나인 이벤트에 대해서 알아 보겠습니다. 이벤트는 매우 중요하지만, 내용은 쉽습니다. 이벤트 뜻 그대로 사건입니다. 이전 글의 예제를 이해하셨다면 이미 이벤트에 대해 알고 계십니다. 다만, 이벤트 단어를 사용하지 않았을 뿐입니다. ▲ 이전 글에서 만든 예제입니다. 1초마다 타이머가 발생하면 현재 시간을 Label3에 입력하도록 했습니다. 또한, Button1을 마우스로 클릭하면 프로그램이 종료됩니다. 여기서 1초마다 발생하는 타이머와 마우스 버튼을 눌러서 발생하는 클릭을 이벤트라고 합니다. 폼 위에 올려 놓은 Label, Edit, Button, Timer를 컴포넌트라고 ..
MODBUS-RTU 프로토콜 쉽게 이해하기
MODBUS 프로토콜 이 글은 시리얼 통신을 잘 알고 있지만, MODBUS-RTU를 처음 접하는 분을 위해 저의 경험을 바탕으로 작성했습니다. 시리얼 통신을 꽤 오랫동안 다루었지만, MODBUS-RTU를 처음 접했을 때는 지금껏 사용해 오던 프로토콜하고는 느낌이 달라서 왜 이렇게 생겨 먹은 것인 지부터 이해해야 했습니다. 보통 시리얼 통신은 장비에 맞추어 작성합니다. 장비에 어떤 입출력이 있고 무엇을 제어해야 하는지와 구해야 할 정보에 따라서 프로토콜을 설계합니다. 즉, 장비와 프로젝트에 따라서 프로토콜이 바뀌고 그때마다 프로그램을 수정하거나 새로 작성합니다. [내용 추가] 모드버스는 함수에 따라 패킷 구성이 다릅니다. 함수마다 요구하는 내용이 다르기 때문이죠. 그래서 "모드버스 프로토콜 기본구성"이라는..
윈도우 프로그램 만들기 라자루스 컴포넌트 속성이란?
Lazarus IDE component property 필요한 프로그램을 직접 만들고 싶다면 통합 개발 환경 라자루스를 추천하니다. 이전 글에서 라자루스를 소개하면서 간단한 프로그램을 작성했는데요, 자리를 잠시 비울 때 찾는 분을 위해 메시지를 남겨 놓는 프로그램이었죠. ▲ 제대로 작동은 되지만, 뭔가 어색하죠? 처음 보는 분이라면 뭐가 뭔지 이해가 안 될 것입니다. 기능에 따라서 적당한 문장을 넣어 준다면 좀 더 쉬운 프로그램이 되겠습니다. 예를 들어 Button1 보다는 "종료"라고 쓴다면 눌러보지 않아도 어떤 기능인지 알 수 있습니다. Edit1이 어떤 뜻인지 모르겠지만, 알게 되어도 글을 쓰려면 "Edit1" 글자를 지우고 써야 합니다. 이번 글에서는 라자루스에서 컴포넌트의 속성이라는 것을 이해하..
라자루스 디버깅 툴 디버그서버 사용 방법
Lazarus DebugServer 라자루스로 윈도우 프로그램을 작성할 때 아쉬운 점이 있습니다. 디버깅을 위한 문장을 라자루스의 Messages 윈도우에 출력할 수 있다면 좋겠는데 아직 방법을 찾지 못했습니다. 콘솔 프로그램이라면 가능한 것 같은데 윈도우 프로그램은 Messages 창으로 전송할 방법이 없네요. 대신에 라자루스가 설치된 폴더에 tools 폴더가 있는데, 이 안에 DebugServer라는 프로그램이 있습니다. 이 프로그램을 먼저 실행하고 디버깅을 위한 문자를 전송해서 확인할 수 있습니다. ▲ 라자루스로 lazarus/tools/debugserver 안에 있는 debugserver.lpi 프로젝트 파일을 열기 합니다. ▲ 만일 DebugServer를 컴파일해서 실행했을 때 시작하자마자 "d..
나도 프로그래머 라자루스 통합 개발 환경
오픈소스 통합개발환경(IDE) 라자루스 윈도우 프로그램을 직접 만들고 싶은 분께 오픈 소스 통합 개발 환경(IDE) 라자루스를 권합니다. 프로그래밍은 전문 지식이 필요해서 매우 어렵게 생각되는데요, 라자루스는 프로그램을 쉽게 만들 수 있는 편리한 기능을 제공해서 프로그래밍의 문턱을 낮추어 줍니다. 라자루스에 대한 자세한 얘기는 밑으로 내리고 과연 라자루스로 어떻게 프로그램을 작성하는지 보겠습니다. 라자루스의 첫 번째 프로그램으로 자리를 잠시 비울 때 나를 찾는 분에게 안내 문장을 보여 주는 작은 윈도우 프로그램을 만들어 보겠습니다. 화면 가운데에 메시지를 입력할 수 있는 입력창을 넣고 그 아래에 종료 버튼을 놓겠습니다. 참고로 이 정도의 프로그램이라면 라자루스 설치에서 만들기까지 10여 분도 채 안 걸릴..