라벨이 Delphi인 게시물 표시

[Delphi] 진법변환 (16->10, 10->2, 2->16. 10->8, 2->8)

  델파이 진법변환 소스 16->10, 10->2, 2->16. 10->8, 2->8 2진수 : 0, 1 → 수의 개수가 두 개이기에 2진수.. (4진수 : 0, 1, 2, 3 → 수의 개수가 네 개이기에 4진수..) 8진수 : 0, 1, 2, 3, 4, 5, 6, 7 → 수의 개수가 여덟 개이기에 8진수.. 10진수 : 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 → 수의 개수가 열 개이기에 10진수.. 16진수 : 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A(10), B(11), C(12), D(13), E(14), F(15) → 수의 개수가 열여섯 개이기에 16진수.. ---- 소스코드 // 문자를 10진수로... function CharToInteger(chr: Char): Integer; begin   Result := Ord(chr); end; // 16진수를 10진수로... function HexToInteger(HEX: String): Integer; begin   if HEX = '' then begin     Result := 0;   end   else begin     HEX := '$' + HEX;     Result := StrToInt(HEX);   end; end; // 10진수를 2진수로... function DecToBinStr(n: integer): String; var   S: string;   i: integer;   Negative: boolean; begin   if n = 0 then begin     Result := '0';     System.Exit;   end;   Negative := False;   if n < 0 then     Neg...

8.이미지 보정 프로그램

이미지
2005년에 작업했던 이미지 보정 프로그램 예전에 작업한 프로그램으로 수백 장의 스캔받은 이미지를 보정하는 프로그램입니다. 문서를 이미지 화 시켜서 보관하려거나 PC로 쉽게 오래된 책이나 문서를 찾아보려는 시도를 하는 일이 있었는데요 약 19년 전 만든 프로그램입니다. 프로그램 스크린샷 예전 소스를 정리하다가 2005년도에 작성한 이미지 보정 프로그램을 발견했습니다. 이거 만들 때 생각이 나서 포스팅해 봅니다. 이 프로그램은 여러 장의 스캔받은 이미지 파일을 보정할 때 사용하는 프로그램입니다. 보통 책이나 서류 디지털화하면서 통째로 스캔받는 경우가 있거든요. 스캔받은 여러 장의 이미지(*.tif) 파일의 자동 기울기, 잡티제거, 보정 등을 쉽게 할 수 있게 화면이 구성되어 있는 프로그램이며 제작 의뢰업체는 종이 문서를 스캔받아 디지털 작업을 주로 하는 업체에서 의뢰를 받아 작성하게 되었습니다. 주요 기능은 다음과 같습니다. TIF 이미지 폴더별로 읽어와서 디스플레이 및 편집 마우스로 선택한 곳 삭제, 복사, 붙여넣기 자동 점 제거(2005년도에는 스캐너가 좋지 않아서 점 같은 것들이 많이 보였어요. 1px의 점들을 자동 제거) 자동 기울기 수동 기울기(특정 위치 두 개의 점을 그으면 그 기울기만큼 수동 기울기 조정) 이미지 회전 특징 이 프로그램은 Delphi 7버전으로 개발되었으며 상용 이미지 컴포넌트를 사용하여 개발하였습니다. 상용 이미지 컴포넌트 명은 ImagXpress입니다. 그리고 재밌는 게 이때 게임을 리니지 2를 하고 있어서 단축키 F1 : 부분 삭제, F3 : 자동 기울기, F4 : 저장+다음장 으로 구성하였습니다. 매일매일 리니지 2를 하면서 F1~F4를 계속 누르다 보니 단축키 배치가 추가하면 편할 거 같아서 F1~F4를 적용했네요. 제가 만든 프로그램 중 사용자에게 편하다고 좋다고 평가받은 프로그램 중 하나입니다.

7.제적부 색인 프로젝트

제적부 색인 프로젝트 개발툴 : 델파이 7.0 DB : Firebird 개요 2004년쯤 프로젝트로 구청에서 오래된 문서(제적부)를 스캔하여 DB화하는 작업을 하였습니다. 구청 창고에 보관되어 있는 오래된 1800년대 제적부(요즘으로 이야기하면 주민등록?)를 스캔받아서 DB화하는데 거기에서 사용할 프로그램을 제작하였습니다. 첫 번째 프로그램 뷰어+인덱스 프로그램 오래된 문서를 스캔받은 이미지(TIF)를 보여주고 스캔받은 이미지를 작업자가 한자를 읽어서 각각의 항목에 입력하는 프로그램입니다. 여러 사람이 스캔받은 이미지를 보면서 작업하기 위해서 로컬에 DB를 심어서 동작하는 프로그램을 만들었고 DB는 파이어 버드(Firebird)를 사용하였습니다. 다른 DB는 PC에 프로그램을 설치해야 하는데 로컬 동작하게 해서 프로그램이랑 이미지를 외장하드, USB에 저장한 후 작업 할수 있도록 제작 하였습니다. 각자 사용자가 이미지를 보면서 입력한 정보는 프로그램 폴더에 있는 DB에 저장이 됩니다. 입력하는 정보들은 성명, 주소, 생일 등이었습니다. 스캔받을 대상의 종이가 정말 오래된 종이라서 스캔도 깨끗하게 되지 않아서 뷰어 기능에 기울기 자동 조정, 점 제거 기능을 추가하였습니다. 당연히 확대 기능도 있었죠 두 번째 프로그램 DB 변환 각각의 작업자들이 로컬로 작업한 DB 파일들을 가지고 구청에 제출하기 위한 XML 형태로 변환하는 프로그램입니다. 작업자들이 이미지 수가 많아서 작업자들에게 나누어서 작업했기 때문에 개별로 XML로 변환하여 구청에 제출하였습니다. 이전에는 계속 텍스트 파일 등을 사용했는데 XML 을 처음 사용해 봤어요!!! 저장된 DB 파일에서 XML Convert 하는 형태의 프로그램 입니다. 프로젝트를 진행하면서 우리나라 주민번호 체계 중에 1800년대 사람들에 대해서 알게 되었습니다. 1800년대 남자는 8, 여자는 9로 뒷자리가 시작됩니다. 데이터 베이스 Firebird를 처음 사용해 봤는데 아무것도 설치하지 않아도 로...

6. 도면 뷰어 컴포넌트 교체기

기존 도면 뷰어 개발 내용 https://skshpapa80.blogspot.com/2025/02/3.html 도면 뷰어를 개발해놓고 1년쯤 시간이 지난 후 SI 프로젝트와 유지 보수 업무를 진행하면서 회사 생활을 하고 있었습니다. 근대 다시 도면 뷰어 프로그램의 업그레이드 업무가 할당됩니다. 잘 사용하고 있었는데 이제 더 이상 기존 프로그램을 사용하기 점점 어렵다고 하네요. 사유는 주로 쓰는 AutoCad 버전이 14 -> 2000으로 변경 AutoCad 2000 버전에서는 고은글(shx) 폰트 사용안하고 윈도우 폰트(ttf) 사용 작업해야될 파일 버전 비율이 AutoCad 2000이 거의 90% 정도 였습니다. 기존 프로그램을 사용하려면 AutoCad 2000 버전으로 된 파일을 14버전으로 다시 저장해야 되는데 파일수가 너무 많아져서 이제는 힘들다는 CAD 작업자 요청에 따라 다시 업그레이드 업무를 받습니다. 기존의 델마당에서 찾은 OpenDwg Viewkit 을 활용한 뷰어를 업그레이드할 시기가 온 거죠. AutoCad 2000 버전을 인식하지 못하고 윈도용 폰트(ttf) 도 인식이 안되었습니다. 그래서 OpenDwg Viewkit의 새로운 버전을 받으려고 OpenDwg.org에 갔더니 멤버십을 가입하라고 합니다. 가입 안 하고는 받을 수가 없더라고요. 영문으로 된 사이트에 가입을 하고 Viewkit를 받았는데 기존 방식에 적용하기가 좀 힘들었어요 기존 방식이 OpenDwg Viewkit DLL로 래핑(VIsual C 사용) 하고 그걸 Delphi에서 호출하는 방식으로 사용하였는데 DLL로 래핑 하는 곳부터 막히더라고요. Visual C에서 DLL로 만든데 OpenDwg Viewkit이 변경이 많이 되었는지 잘 안되었습니다. DLL 래핑 해서 Delphi에서 테스트하면 뭔가 인자라든지 값들이 안 맞아서 안되고 계속 에러를 ㅎㅎ 컴포넌트구매 다른 SI 업무도 같이 진행하고 있어서 이거만 잡고 있을 수 없어서 DWG 컴포넌트 ...

5. 지하철 표지판 관리 프로그램 (미완성)

지하철 표지판 관리 프로그램 2002년도 초반에 진행하던 프로젝트 중에 지하철 표지판 관리 프로그램도 있었습니다. 역시 개발 툴은 Delphi 5.0이었고 안타 깝게도 미완성이었던 프로젝트입니다. 시작 첫 회사는 도면을 많이 다루는 회사여서 그리고 지하철과 관련된 일을 많이 하면서 지하철의 표지판 관리에 어려움이 있다고 해서 개발 진행하기로 하였습니다. 관리를 엑셀로 하시더라고요. 역별로 엑셀에 도면 이미지를 붙이고 거기에 표지판 번호를 붙이고 다른 시트에 각 번호에 대한 표지판의 정보를 관리하시고 표지판의 정보와 표지판 이미지도 삽입해서 관리하고 계셨습니다. 역에서 표지판을 바뀔 때마다 엑셀에서 그 표지판을 찾아서 다른 툴을 이용해서 이미지를 수정해서 바꿔주는 게 힘들다고 하시더라고요. 그래서 Delphi 5.0과 아파쳐라는 도면관리 툴을 가지고 프로젝트를 기획을 하기로 하였습니다. 프로그램 기획 아파쳐라는 툴이 있습니다. 저도 이때 처음 사용해 본 툴인데 도면에 심벌을 올리고 각 도면이랑 데이터베이스를 연결하여 도면의 수치, 위치 정보 등을 관리하며 리포팅을 할 수 있다고 합니다. 각 심벌이랑 링크도 가능하고요. 외국에서 개발된 툴이며 이미 FM(Facility Management) 쪽에서는 많이 사용하는 툴이라고 하더라고요. 예를 들면 사무실 도면이 있고 사무실 도면에 책상 심벌, 의자 심벌을 그리고 그 심벌에다가 책상, 의자의 정보를 데이터베이스에 등록해놓으면 사용자가 도면을 보다가 책상, 의자를 클릭하면 입력된 정보가 뜹니다. 이툴을 이용해서 각 역사별 층 도면을 입력하고 거기에 표지판 위치에 심벌을 그립니다. 그 심벌을 클릭하면 제가 개발한 프로그램이 실행되면서 표지판 정보와 표지만 이미지를 불러옵니다. 제프로 그램에서 표지판 이미지를 수정하면 될 거 같았습니다. 그렇게 기획을 하고 개발을 시작합니다. 구현 우선 역을 하나 정해서 구역에 대한 프로그램을 개발해 보기로 하였습니다. 아파쳐 툴에 층별 도면을 입력하는 작업을 했는데 ...

3. 도면 뷰어 프로그램 수정

도면뷰어 수정 개발툴 : Delphi 5.0 2001년 이미지 뷰어를 완성하고 나서 다음 개발 일로 도면 뷰어 프로그램 수정에 들어갑니다. 이번 프로그램도 목록은 이미지 뷰어와 같이 텍스트를 사용하고 이미지를 불러오는 대신 DWG(AutoCad 파일)을 화면에 보여줍니다. 도면 뷰어에 사용된 컴포넌트는 Dr.DWG라고 처음 보는 컴포넌트였습니다. 해외에서 개발된 컴포넌트로써 사용하기 편한 OCX로 되어 있어서 동작은 잘 되는데 문제는 한글 폰트를 인식 못 하더라고요. 해외 버전이라 그런지 국내에서 CAD 작업할 때 사용하는 한글 폰트를 인식하지 못하기 때문에 뷰어 프로그램으로 납품이 불가능하게 되었습니다. 아마 그때 사용했던 AutoCAD 한글 폰트가 고은 글(shx) 이었던 거 같아요. 제 기억에 Dr.DWG에서는 인식시킬 방법이 없어서 한글이 들어간 DWG 파일은 모두 ???? 표시되었습니다. 그래서 업그레이드 개발 업무가 할당됩니다. 그래서 제가 한일 Dr.DWG 개발사에 이메일 쓰기 잘못하는 영어를 영작하여 메일을 쓰긴 했는데 답변에 불가능하다는 이야기였습니다. 델파이 커뮤니티(델마당, 델파이코리아) 자료실 검색 DWG 도면 컴포넌트 관련 자료를 찾기 시작했습니다. 이전 개발자에게 문의 (전화 통화) 등의 과정을 거치는데 진도가 잘 안 나갔습니다. 생각보다 DWG 관련 컴포넌트의 수가 별로 없더군요. 제가 못 찾을 걸지도 이전 개발자도 외국 사이트에서 겨우 구입했도고 우편으로 도착했다고 했어요 ㅎㅎ 그래서 포기할까 하다가 델마당에서 OpenDWG 관련 자료를 찾았습니다. 감사하게도 소스까지 공개해주셔서 받은 자료를 열심히 분석하고, OpenDWG.org 사이트에 가서 자료를 찾아서 보고 델마당에 올라온 자료를 가지고 도면 뷰어 프로그램을 완성했습니다. 당연히 shx 한글 폰트도 지원되었고요. 그렇게 개발을 완료했더니 회사에서도 인정을 받기 시작하였습니다. 신입 개발자로 입사해서 두 개의 프로그램을 완성했으니까요! 하지만 1년 ...

2. CD-ROM 에서 동작하는 이미지 뷰어 만들기

제가 첫 회사에서 개발했던 내용을 소개합니다. 벌써 20년이 넘었네요. 2001년 입사한 첫 회사는 인쇄업과 컴퓨터 프로그램 개발을 같이 하는 회사였고 특이한 점은 병역 특례 회사였습니다. 병역 특례로 입사하게 되면서 근무하게 되었는데 근무 환경은 좋지 않았습니다. 입사하자마자 맡은 업무는 CD를 제작해서 납품하는데 거기에 들어가는 프로그램 개발건이었습니다. 이전 개발자가 만들어 놓은 부분을 수정만 하는 거였죠. 기능소개 프로그램의 기능은 단순합니다. CD를 컴퓨터에 넣었을 때 자동 실행되며 CD 안에 있는 목록을 가지고 이미지를 보여주는 데 이때 이미지는 주로 책이나 문서들을 스캔받아 이미지화하여 CD 안에 저장되어 있습니다. 주 사용처는 관공서에 프로젝트가 끝나고 나서 제출해야 되는 서류를 예전에는 인쇄한 형태로 제출을 하다가 양이 많아 관공서에서도 보관하기 힘들어서 CD-ROM에 데이터 형태로 제출하고 그 제출한 내용 CD-ROM을 PC에 넣었을 때 바로 볼 수 있도록 프로그램까지 같이 제공하려고 작성된 프로그램입니다. 이 방식을 처음 제안 한 사장님은 국무총리 상도 받으셨네요! CD-ROM에서 동작해야 해서 실행파일 하나로 빌드 되는 Delphi를 사용해야 했습니다. 다른 개발 툴인 VisualC(MFC) 나 VisualBasic의 경우 PC에 라이브러리 등을 설치해야 하는데 Delphi를 사용하면 EXE 파일이 하나라서 필요가 없거든요. CD-ROM 에 기록된 이미지 목록은 텍스트 파일로 저장 되어 있습니다. (메모장으로 수정) 제목 파일명 이렇게요 Index.txt라는 파일을 읽어서 왼쪽 리스트에 보여주고 리스트에서 이미지를 선택하면 오른쪽 이미지 컴포넌트에 이미지가 디스플레이 됩니다. 추가 기능 개발은 이전 개발자가 만들어 놓은 프로그램에 화면을 수정하고 저는 목록을 단계로 분리하는 기능을 넣었습니다. 제목 파일명 제목 파일명 이렇게요 트리 형식(Listview -> TreeView 컴포넌트 변경)으로 보이도...

Delphi 자작 컴포넌트

이미지
  자작 컴포넌트 필요해서 만들기 시작한 Delphi 컴포넌트를 소개합니다. 자주 쓰는 기능을 미리 만들어 놓고 사용하고 있습니다. 다만 최근에는 잘 안 쓰는데 회사에서는 C#을 사용하기 때문에 Delphi를 자주 사용하지 않습니다. khXLS : Excel 제어 유닛 khGrid : StringGrid 기능 추가 khEdit : 정렬, Mouse Enter. Leave Event khComboBox : 값이 두개인 Combobox, Item/Values : TStrings khImage : 이미지 컴포넌트 확장 khReport : 출력 기능 khTrayIcon : 트레이 아이콘 제어 컴포넌트 소스 https://github.com/skshpapa80/skshpapa80_pack

델파이(Delphi) 소개

이미지
  제 첫 회사에서 사용한 개발툴 델파이(Delphi)를 소개합니다.  Delphi는 Embarcadero Technologies에서 개발한 RAD(신속한 애플리케이션 개발) 도구로, 주로 데스크톱, 모바일, 웹, 데이터베이스 애플리케이션을 빠르고 효율적으로 개발하는 데 사용됩니다. Delphi는 Pascal 언어의 확장판인 Object Pascal을 기반으로 하며, 강력한 UI 디자인 도구와 컴포넌트 기반 개발 환경을 제공합니다. 다음은 Delphi의 주요 특징과 장점입니다. 주요 특징 1. 비주얼 프로그래밍 환경 드래그 앤 드롭 방식으로 UI를 설계할 수 있어 프로토타이핑과 개발 속도가 빠릅니다. 다양한 내장 컴포넌트와 확장 가능한 라이브러리 제공. 2. Object Pascal 언어 Delphi는 강력하고 간결하며 구조화된 프로그래밍을 지원하는 Object Pascal 언어를 사용합니다. 강한 타입 시스템과 객체 지향 프로그래밍 지원. Pascal 언어는 과거의 비주얼 베이직의 대항마로 굉장히 쉬언 언어로 유명했습니다. 3. 크로스 플랫폼 개발 Delphi의 FireMonkey(FMX) 프레임워크를 사용하면 하나의 코드베이스로 Windows, macOS, iOS, Android 등 여러 플랫폼용 애플리케이션을 개발할 수 있습니다. 네이티브 컴파일러를 통해 각 플랫폼에 최적화된 성능 제공. 4. 강력한 데이터베이스 연결 다양한 데이터베이스(Oracle, MySQL, PostgreSQL 등)에 대한 강력한 연결 및 관리 기능을 제공합니다. 데이터스냅(DataSnap) 기술을 통해 클라이언트-서버 애플리케이션을 쉽게 개발 가능. 5. 확장 가능한 컴포넌트 기반 아키텍처 기본 제공 컴포넌트 외에도 써드파티 컴포넌트를 쉽게 추가할 수 있습니다. 개발자가 직접 커스텀 컴포넌트를 제작할 수 있는 기능도 지원. 장점 1. 빠른 개발 속도 비주얼 디자이너와 RAD 환경 덕분에 초기 개발과 유지보수가 빠르고 효율적입니다. 2. 네이티브 애플리케이션 지원 네...

Lotus 123 파일 읽는 프로그램

이미지
  Lotus 123 파일 읽는 프로그램 2006년에 작업했던 프로그램 입니다. 지인의 부탁으로 작업한 프로그램인데 소스 정리하다가 나왔네요.  예전에 Lotus 123이라는 오래된 Spreadsheet프로그램이 있었는데 Excel이 나오기 전에는 많이 사용했습니다. 지인의 회사에서 Lotus 123 구동하는 PC 가 고장이 나면서 기존 파일을 읽어 오지 못해서 난처했었죠.  그러다 Lotus 123 파일을 읽어서 Excel 변환하는 프로그램을 만들었습니다.  우연히 Lotus 123을 읽어오는 Delphi Component가 저에게 있어서 그 Component 를 사용해서 읽은 후 Excel 저장합니다. Delphi 7 버전으로 만들었네요. 기능 Lotus 123 파일 읽어오기 (파일에 여러시트가 있을경우 Tab을 생성하면서 열기) Excel저장, 전체저장(전체 탭 Excel파일로 저장) Excel 이 설치된 PC 에서만 동작합니다. 엑셀 저장은 Excel Automation 사용하거든요

Sheet2DB – Excel DB 업로드 프로그램

이미지
Sheet2DB  프로젝트를 진행하다 보면 Excel 데이터를 DB Table로 입력해야 되는 경우가 많이 생깁니다. Excel 데이터를 DB Table 구조에 맞춰서 입력하기가 때로는 막 노동처럼 느껴져서 만들게 되었습니다. 스크린샷(ScreenShot) Excel 선택하는 페이지 Excel 선택 후 DB 접속 정보 입력 DB 접속 정보를 입력한 후 DB연결/테이블 리스트 버튼을 누르면 다음페이지로 넘어 갑니다. MSSQL 용이라서 sp_tables 테이블 정보와 sp_columns 컬럼정보를 가져옵니다. 테이블 리스트에서 사용할 테이블을 선택하고 테이블 컬럼명 버튼을 누르면 테이블 컬럼 정보가 나오고 Excel 컬럼 정보랑 연결/취소 버튼을 이용해서 매칭 시킨 후 다음페이지에서 DB작업 버튼을 클릭하면 DB 에 Insert 됩니다. 테이블 정보와 Excel 컬럼(타이틀) 정보를 활용하여 Insert 구문을 자동으로 만들어서 테이블에 저장됩니다. 처리결과를 확인합니다. 프로그램 정보 Delphi 10.3 커뮤니티 에디션으로 작업 엑셀 읽어 오는 부분은 Excel.Application OLE 를 사용했습니다. 그리드는 기본그리드인 스트링 그리드 현재는 MSSQL 만 됩니다. 오라클 추가한 후 공개할 예정입니다. 그전에 필요하신분은 따로 연락 주세요!!! PS . 2022-04-28 소스 github 에 올렸어요  https://github.com/skshpapa80/Sheet2DB

[Delphi] 웹프로그래밍 #4 - 게시판 만들기

이미지
  웹프로그래밍 04 - 게시판 만들기 새로운 프로젝트를 생성합니다. ISAPI 프로젝트를 만들고 저장을 DelphiBoard 로 합니다. 이번엔 게시판은 DB 연결을 해야 하니 MSSQL 을 사용하기 위해 ADOConn, ADOQuery1 컴포넌트도 올려줌니다. 이번에 사용할 액션은 우선 3개 List(기본), Read(읽기), Write(쓰기) 입니다. ​HEAD 와 FOOT 만들기 웹의 HEAD 부분을 코딩합니다. function TWebModule1.Head: String; var     view_html : String; begin     view_html := '<html>'+ sLineBreak;     view_html := view_html + '<head>'+ sLineBreak;     view_html := view_html + '<title>Delphi board</title>'+ sLineBreak;     view_html := view_html + '<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3" crossorigin="anonymous">'+ sLineBreak;     view_html := view_html + '</head>'+ sLineBreak;     view_html := view_html + '<body>'+ sLineBreak;     view_html := view_html + '<div cl...

[Delphi] 웹프로그래밍 #3 - 코딩 심화

이미지
  웹프로그래밍 03 지난번 강좌는 실행까지 부분이고 실제 코딩을 해보겠습니다. ​ Projects 창에서 WebModuleUnit1.pas 를 더블클릭하면 아래창이 나오고 마우스 오른쪽 버튼을 클릭하면 아래 팝업이 나옵니다. Action Editor 창이 열리면 여기에서 Path를 추가할수 있습니다. Path 란​ http://localhost/TEST/test.dll/list?page=1 list 같이 Path 를 추가하여 여러개의 하위서비스를 추가할수 있습니다. 기본은 "/" 라서 아무것도 없으면 기본이 처리됩니다. Object Inspector 창에서 Events 탭에서 OnAction 이벤트를 추가하여 아래처러 코딩하면 procedure TWebModule1.WebModule1WebActionItem1Action(Sender: TObject;   Request: TWebRequest; Response: TWebResponse; var Handled: Boolean); begin     Response.Content :=         '<html>' +         '<head><title>Web Server Application</title></head>' +         '<body>List Page</body>' +         '</html>  end; http://localhost/TEST/test.dll/list 로 접속하면 다음과 같은 결과를 얻을수 있습니다. OnAction 에는 Request, Response 라는 객체가 선언되어 있는데요. Request 값을 받아올때 Response 는 HTML 을 html을 출력할때 사용합니다. GET 방식으로 page 값 받...

[Delphi] 웹프로그래밍 #2 - 코딩

이미지
  웹프로그래밍 02 이제 본격적으로 ISAPI 웹프로그램을 만들어 봅시다. Delphi 로 웹프로그래밍을 하는 이유는 Delphi로 만들어진 코드나 로직을 다른 언어로 개발하기 힘들때 사용합니다. ​ 델파이를 실행 후 File-New-Other 를 선택합니다. "Web-Web Server Application"을 선택하고 "OK" 클릭 우선 IIS, Windows 용으로 만들어 볼꺼예요 "Next" 클릭 "ISAPI dynamic link library"를 선택하고 "Finish" 클릭.​ 델파이가 기본 페이지를 생성합니다. "Project1"과 "WebModuleUnit1" 생성된 프로젝트를 저장을 합니다. test.dll 로 만드려구요. WebModuleUnit1.pas 파일을 선택한후 더블클릭하면 "WebModuleDefaultHandlerAction()" procedure 에 원하는 HTML 을 코딩 후 빌드한 다음에 https://skshpapa80.blogspot.com/2022/01/delphi-1-iis.html IIS 설정에서 만든 폴더에 test.dll 을 복사한 후 ​http://localhost/TEST/test.dll  실행하면 "WebModuleDefaultHandlerAction()" 코딩한 HTML 이 보입니다. ​여기 까지가 기초 코딩 입니다. 다음 포스트에서 Delphi 웹 프로그래밍에서 사용할수 있는 여러 기능들을 소개하겠습니다.

[Delphi] 웹프로그래밍 #1 - IIS 설정

이미지
웹프로그래밍 01 IIS 에서 ISAPI 설정하는법 먼저 IIS(인터넷 정보 서비스) 관라자 를 열어서 프로그램을 사용할수 있게 설정해야 합니다. 그렇지 않으면 브라우저는 오류 페이지를 보여주거나 dll 파일을 다운로드 합니다. ​ MIME 형실 설정 “.dll” 를 선택하고 마우스 오른쪽 버튼을 눌러 [편집] 모드로 들어간다. 기존에 설정되어 있던 "application/octet-stream"을 "text/xml"로 변경하고 "확인"을 누르자. 처리기 매핑 설정 "ISAPI-dll"이 "사용 안함"으로 되어있다. "ISAPI-dll”를 선택하고 마우스 오른쪽 버튼 클릭하여 "기능 사용 권한 편집"을 선택. ISAPI-dll 이 안보인다면 Windows 기능 추가 에서 IIS 항목의 ISAPI 기능에 체크하면 됨 "실행"에 선택하고 "확인"을 누른다. "ISAPI-dll"라인이 "사용"으로 변경되었음을 확인한다. ​ ISAPI 및 CGI 제한 설정 IIS 관리자에서 좌측 트리의 최상단을 클릭하면 "ISAPI 및 CGI 제한"이 나오는데 더블 클릭한다. "ISAPI 및 CGI 제한" 목록에서 마우스 오른쪽 버튼을 눌러 "기능 설정 편집"을 클릭. "지정하지 않은 ISAPI 모듈 허용"을 선택하고 "확인"을 누른다. 윈도우가 64bit 라서 IIS 가 64비트 일경우 dll 파일이 32비트 애플리케이션로 빌드하면 실행이 안됩니다. 그때는 아래와 같이 설정합니다. "32비트 애플리케이션 사용 " : True ​설정 완료 실제 Delphi 로 코딩을 한 후 실행은 다음 포스트에서!

사용하는 프로그래밍 언어

프로그래밍 언어 벌써 프로그래머로 취직을 해서 회사를 다닌 지 19년이 넘었습니다. 정말 오래 다녔네요. 벌써 나이가 40이 넘었네요!!! 그래서 지금까지 사용하는?? 사용해 봤던 프로그래밍 언어를 정리해 봅니다. 글을 시작하면서 간단히 생각해 봐도 참 많네요!!! C/C++ 고등학교 때 프로그래머가 되겠다며 C언어 책을 하나 사서 보기 시작합니다. 고등학교 들어가서 산 PC(펜티엄급)에 터보 C를 설치한 후 책을 따라 하는데 책을 샀을 때에는 엄청난 프로그래머가 될 줄 알고 열심히 봤는데 처음에는 엄청 어렵더군요.. 그래서 프로그래밍보다는 게임을 많이 합니다. 그때 좀 더 열심히 했으면 지금보다 나았을 텐데 ㅠ.ㅠ 대학교에 가서 C언어 과목을 수강하면서 제대로 배우기 시작합니다. 확실히 고등학교 때 본 C언어 책이 도움이 되네요. C언어 리포트는 다 제가 해주기 시작합니다. 프로그램을 짜둔 다기보다는 디버깅을 해주고 안 되는 부분 설명해 주고 점심을 참 많이 얻어먹었습니다. 일주일 동안 매일 얻어먹은 적도 있어요 ㅎㅎ Visual C++을 사용하면서 C++을 배우게 됩니다. 하지만 Delphi를 배우기 시작하면서 Delphi에 빠지게 되고 C/C++은 멀리하게 됩니다. 그리고 2005년에 PSP 자작 프로그램 개발할 때 사용해 보게 되는데 역시 C에 대한 관심이 별로 안 생기네요. 아마 C++을 계속했으면 C++Builder를 사용했을지도 모르겠네요… VisualBasic 대학 다니면서 동아리 활동을 시작합니다. 근데 나름 전산 동아리라고 학교 축제에 프로그램을 짜서 축제 기간 동안 전시합니다. Delphi에 빠져들면서 Delphi를 사용해서 프로그램을 짜고 전시회도 하고 싶었는데 팀 인원이 모자라서 VisualBasic를 사용하는 팀에 합류합니다. 거기서 합숙(?) 같은 걸 하면서 동영상 재생기도 만들어보고 앨범 프로그램도 만들게 되고 VisualBasic의 기초는 배우게 됩니다. 설마 나중에 회사에서 사용할 일이 있을 줄을 그땐 몰랐지요!!! Delphi...

사진 정리 프로그램(Photodate)

이미지
  두 딸아이의 아빠가 된 후 아이들 사진을 엄청 찍습니다. 디카 그리고 스마트폰 카메라가 좋아지면서 사진을 더 많이 찍는데요.  사진을 찍고 난 후 PC에 옮기면서 날짜별로 정리하려고 만들게 되었습니다. 처음에는 사진에 기록된 Exif 정보를 하나하나 확인하여 폴더를 만들고 정리했는데 사진 파일이 많아지니 쉽지 않더군요.  2017년 폴더를 만든 후 2017-01-01 이렇게 관리를 하기 시작했는데 일일이 확인하고 하니 실수도 하고 힘도 들더군요. 프로그래머라면 이런 일을 자동으로 처리해야 한다는 생각에 이 프로그램을 만들게 되었습니다. 제작 툴은 델파이 10.2 도쿄 스타터 버전입니다! 프로그램 스크린샷 사용법 사진 파일이 모여 있는 대상 폴더를 지정하면 위 리스트에 이미지 목록이 표시됩니다. 이동 대상 폴더를 선택하고 파일을 이동할지 복사할지 선택한 다음 작업 시작 버튼을 누르면 됩니다. 이동 폴더에 날짜(2016-03-31 Exif 날짜) 폴더가 생긴 후 날짜 폴더로 이미지가 이동/복사됩니다.

[Delphi] 웹브라우져 컨트롤을 이용하여 출력하기

이미지
  웹브라우져 컨트롤을 이용하여 출력하기 델파이로 프로그램 작업을 하다가 출력물이 필요해서 웹브라우져 컨트롤을 이용한 출력 프로그램을 만들었습니다. 델파이 스타터 버전에는 퀵리포트나 패스트 리포트가 없어서 HTML 을 디자인 하고 웹브라우져 컨트롤로 표시한후 출력하면 되겠다는 생각에 만들어 보게 되었습니다. 출력 데이터 생성 ---- 소스코드 var   htmltext, errmsg: String;   Fp: TextFile;   IOError : integer; begin   htmltext := '<meta http-equiv="Content-Type" content="text/html; charset=euc-kr">' + #10#13;   htmltext := htmltext + '<table border="1">';   htmltext := htmltext + '<tr><td>성명</td><td>' + Edit1.Text + '</td></tr>';   htmltext := htmltext + '<tr><td>생년월일</td><td>' + Edit2.Text + '</td></tr>';   htmltext := htmltext + '<tr><td>연락처</td><td>' + Edit3.Text + '</td></tr>';   htmltext := htmltext + '</table>';   AssignFile(fp, 'C:\TEMP\tmp.html');   {$I-}   ReWrite(Fp);   {$I+}   IOError := IORe...

[Delphi] 웹으로 파일 전송(POST) 하는 프로그램

  웹으로 파일 전송(POST) 하는 프로그램 예전에 홈페이지나 블로그에 파일을 전송하는 프로그램을 만든적 있었는데 그때 소스를 정리해서 올립니다. ​ 폴더 선택 폴더 선택 다이얼로그 가 나와서 PC의 폴더를 선택하는 코드(SelectDirectory 사용) ---- 소스코드 const     SELDIRHELP = 1000; var     Dir: String;     OSVersionInfo: TOSVersionInfo; begin     // 폴더 선택     // 작업 경로 설정     Dir := CurPath;     OSVersionInfo.dwOSVersionInfoSize := sizeof(TOSVersionInfo);     GetVersionEx(OSVersionInfo);     if OSVersionInfo.dwPlatformId = VER_PLATFORM_WIN32_NT then begin         if SelectDirectory('폴더 찾아보기','',Dir) then begin             if Dir[Length(Dir)] &lt;> '\' then                 Dir := Dir + '\';             CurPath := Dir;             LoadFileList(CurPath);         end;     end     else begin   ...

DirectShow 기본 Cam 프로그램

이미지
  DirectShow 기본 Cam 프로그램 DirectShow 기본 클래스 ​필더그래프 생성, Com 초기화 필더생성 필더 핀 연결 캠(WebCam) 장치 가져오기 DSUtils 는 DSPack 에 포함된 소스 입니다. ---- 소스코드 unit uBaseDShow; interface uses   Winapi.Windows,   {DirectShow 헤더와 ActiveX 헤더 추가}   Winapi.ActiveX, Winapi.DirectShow9, DSUtils; type   TBaseDShow = class(TObject)   private   public     FilterGraph: IGraphBuilder; // 필터그래프의 인터페이스 중의 하나.     MediaControl: IMediaControl;     VideoWindow: IVideoWindow;     constructor Create;     destructor Destroy; override;     function CreateFilterGraph(var Graph: IGraphBuilder): Boolean;     function CreateFilter(const clsid: TGUID; var Filter: IBaseFilter): Boolean;     function FindPinOnFilter(const Filter: IBaseFilter; const PinDir: TPinDirection; var Pin: IPin): HRESULT;     function GetCamFilter: IBaseFilter;   end; implementation { TBaseDShow } constructor TBaseDShow.Create; begin ...