본문 바로가기

전체 글

[Delphi] 스크린 기준 컴포넌트 객체의 좌표 구하기 * TPoint 를 이용.procedure TfrmTest.TestButtonClick(Sender: TObject);var tempPoint : TPoint;begin tempPoint := TSpeedButton(Sender).ClientToScreen(Point(0, 0)); ShowMessage('[X : ' + IntToStr(tempPoint.X) + '] [Y : ' + IntToStr(tempPoint.Y) + ']');end; 더보기
[Delphi] 레지스트리(Registry) 등록 레지스트리 등록하는 간단한 예제 소스 1. 대충 폼을 그리고 2. 소스 (1) 'TRegistry' Class를 이용하여 myRegistry 선언. (2) myRegistry 의 Rootkey 설정. (3) 사용할 경로의 레지스트리 존재 유무 확인 후 레지스트리 등록 * 추가적으로 'TRegIniFile' Class를 이용하여 ini파일 읽기/쓰기 식으로도 등록 가능하다. unit frmRegiSetup; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Registry; type TForm1 = class(TForm) Button1: TButton; Butto.. 더보기
[PostgreSQL] PL/pgSQL - SQL Procedural Language ( Function ) PostgreSQL에서는 Procedural Language를 Function으로 사용한다. PostgreSQL에서 PL/pgSQL의 기본 구조는 다음과 같다. DECLARE : 변수 선언부BEGIN ~ END : FUNCTION 내용 간단하다. integer형 숫자를 반환하는 간단한 Function을 만들면 다음과 같다.CREATE OR REPLACE FUNCTION "FN_Test1"() RETURNS integer AS$BODY$DECLARE temp_number integer;BEGIN temp_number = 1; RETURN temp_number;END$BODY$ LANGUAGE plpgsql VOLATILE COST 100;ALTER FUNCTION "FN_Test1"() OWNER TO p.. 더보기
[Design Pattern] Factory Pattern(팩토리 패턴 : 추상 팩토리 패턴) 디자인 패턴 중 Factory Pattern은 다른 디자인 패턴들보다 확장성에 더 중점을 가진 패턴이라고 해도 과언이 아닐 것이다. 공장에서 물건을 생산할 때 생산라인의 생산공정을 교체하여 각기 다른 제품들을 생산하는 것과 비슷한 원리라고 생각하면 된다. 특히 추상 팩토리 패턴에서는 이런 식으로 원하는 상호간의 의존성을 줄이면서도 클래스를 확장시키면서 매우 효율적인 확장성을 가질 수 있게 된다. 하지만 팩토리 패턴에도 단점이 없는 것이 아니다. 이는 팩토리 패턴의 특성상 당연한 일이다. 예를 들어 3개 제품을 생산하는 공장에서 생산과정 중 하나가 수정이 되었다고 가정해 보자. 제품이 3개뿐이 안되기 때문에 3개의 제품에 대하여 생산과정을 하나씩 수정하는 것은 그리 어려운 일이 아닐 것이다. 하지만... .. 더보기
[Oracle] ora-12541 : TNS 리스너가 없습니다. oracle이 설치된 경로에 NETWORK\ADMIN\ 폴더에 보면 oracle에서 network와 관련한 여러 설정파일들이 있다. 그 중 'tnsnames.ora'라는 파일이 있는데... 이 파일은 간단히 설명하자면 클라이언트가 oracle 서버에 접속하기 위해 필요한 일종의 설정파일이라고 보면 된다. 근데 문제는 'ora-12541 : TNS 리스너가 없습니다'라는 에러가 나올 경우인데... 별도로 'tnsnames.ora' 파일을 셋팅하지 않은 경우라면 oracle 리스너가 동작하지 않고 있을 가능성이 높다. 'tnsnames.ora'파일을 셋팅을 한 일이 있다면 'tnsnames.ora'파일 설정이 올바르게 되어 있는지도 고려해 봐야 할 것이다. 1. oracle 리스너 컨트롤 툴에 접속 2. s.. 더보기
[Java] 재귀함수를 이용한 폴더 복사 pSourcePath: 소스 디렉토리 경로, pDestinationPath: 목적 디렉토리 경로, pOverWrite: 덮어쓰기 유무public void copyDirectory(String pSourcePath, String pDestinationPath, Boolean pOverWrite) throws IOException {File sourceDir = new File(pSourcePath);File destinationDir = new File(pDestinationPath);String[] sourceDirFiles; if (sourceDir.isDirectory() && sourceDir.exists()) {sourceDirFiles = sourceDir.list(); if (!destinat.. 더보기
[Java] 재귀함수를 이용한 폴더 삭제 public void deleteDirectory(String pDirPath) {File sourceDir = new File(pDirPath);String[] sourceDirFiles = sourceDir.list(); if (sourceDir.isDirectory()) {for (int i = 0; i < sourceDirFiles.length; i++) {File file = new File(pDirPath + File.separatorChar + sourceDirFiles[i]); if (file.isDirectory()) {deleteDirectory(pDirPath + File.separatorChar + file.getName());} else {file.delete();}}} if (s.. 더보기
[Delphi] 재귀함수를 이용한 폴더 복사 재귀를 이용한 폴더 복사pOverWrite 가 True이면 덮어쓰기, False이면 덮어쓰지 않고 건너감// pSourceDir 폴더를 pDestinationDir 경로로 복사// pSourceDir : 소스 디렉토리, pDestinationDir : 목적 디렉토리, pOverWrite : 덮어쓰기 유무procedure CopyDirectoryAll(pSourceDir, pDestinationDir: string; pOverWrite: Boolean);var TempList : TSearchRec;begin if FindFirst(pSourceDir + '\*', faAnyFile, TempList) = 0 then begin if not DirectoryExists(pDestinationDir) the.. 더보기