2010-10-13

델파이 오픈 소스들

[출처]  http://www.codeway.kr/board/bbs/board.php?bo_table=Delphi_PDS&wr_id=511&page=2


우선 구글에서 검색하기 ㅋㅋ
 
 
블로그에서 주어온 거 (http://mc4s.tomeii.com/tt/57)
 
메신져 - 파일 전송 가능한 메신져. LAN 환경. 클로즈 소스. GPL
http://sourceforge.net/projects/achat
확대경 -  화면 부분 확대,  소스, GPL
http://sourceforge.net/projects/magnifier
colored library - 문법 강조 , LGPL/MPL1.1, 이글립스 플러그인
http://sourceforge.net/projects/colorer/
아레스 갤럭시 P2P - 슈퍼P2P, 소스, GPL
http://sourceforge.net/projects/aresgalaxy
delphicodetodoc - 델파이 코드를 문서로, 소스, GPL
http://sourceforge.net/projects/dephicodetodoc
dev-php IDE - php IDE 개발 환경, 소스, GPL
http://sourceforge.net/projects/devphp
crash point - worms 아류, 소스, GPL
http://sourceforge.net/projects/crashpoint
delphi code analyser - 델파이 코드 분석툴, 소스, MPL1.1
http://sourceforge.net/projects/dca
Scintilla Project 컴포넌트 - Scintilla 컴포넌트, 소스, LPGL/MPL1.1
http://sourceforge.net/projects/delphisci
프로메테우스 프로젝트 - 라크나로크 서버, 소스, GPL
http://sourceforge.net/projects/prometheusproj
Recognition And Vision Library - 패턴인식 라이브러리, 소스, LGPL
http://sourceforge.net/projects/ravl
소코반 - 게임, 소스, 라이센스 없음
http://sourceforge.net/projects/sokobanyasc
LCD Smartie -  LCD 개발 프로그램, 소스, LGPL/GPL/MPL1.1
http://sourceforge.net/projects/lcdsmartie
Legend of Mir2 Diamond Emulator - 미르의 전설 2 서버/클라이언트 에뮬레이터, 소스, GPL
http://sourceforge.net/projects/diamondm2server
InstantObjects - DB 관련 컴포넌트 패키지, 소스, MPL1.1
http://sourceforge.net/projects/instantobjects
HomeNet PhoneNet - VOIP, 소스, GPL/Nethack General Public License
http://sourceforge.net/projects/hnpnren
shundown monster - 컴퓨터 종료 어플, 소스, GPL
http://sourceforge.net/projects/shutdown
iSafer firewall  - 방화벽, 소스, GPL (한국)
http://sourceforge.net/projects/winsockfirewall
PTISC - 턴베이스 게임엔진(2D Isomatric) 소스, GPL
http://sourceforge.net/projects/ptisc
Klipboard - 클립보드툴, 소스, LGPL
http://sourceforge.net/projects/klipboard
델파이 Indy(9,10)데모, 소스, MPL1.1
http://sourceforge.net/projects/internetdemos
Packetyzer - 패킷 분석기, 소스, GPL
http://sourceforge.net/projects/packetyzer
Programmer's Notepad - 편집기, GPL
http://sourceforge.net/projects/pnotepad
Charset Detector - 문자 코드 검출기, 소스, LGPL
http://sourceforge.net/projects/chsdet
GenIconXP - 다중 아이콘 파일 생성기, 소스, GPL
http://sourceforge.net/projects/geniconxp

2010-10-12

델파이(delphi) - 프로젝트 소스 구성 요소

<프로젝트 파일 소스 구조>

view -> project source


1. program [프로젝트명]
  파스칼 프로그램은 항상 program 이라는 예약어로 시작합니다.
  program 이라는 예약어 다음에는 프로젝트의 이름이 사용됩니다. 
2. use 절
  여기에는 프로젝트에서 사용할 외부 모듈(파스칼에서는 모듈을 unit이라 합니다.)의 목록이 있습니다.
  "Unit1 in 'Unit1.pas' {Form1}" 은 사용되는 폼 {Form1}과 유닛 {Unit1}을 프로젝트에 포함시키는 내용입니다.  
3. begin~end 절
  실제로 프로그램이 시작되는 부분입니다. 위의 그림에 나타난 문장의 의미는 이렇습니다.
  첫번째 문장은 프로그램을 초기화 합니다. 각 유닛에는 유닛의 초기화를 수행하는 부분이 있습니다.
  (프로그램을 초기화 한다는 것은 이런 유닛들의 초기화 기능을 호출하는 등 관련 작업을 수행합니다.)
  두번째 문장은 폼을 생성하고
  세번째 문장은 프로그램을 수행하도록 합니다.



1. unit [유닛 명]
  예약어 unit은 유닛 파일의 시작을 의미합니다.
  unit 다음에는 유닛 파일의 이름이 사용됩니다.
2. interface (선언 영역)
  interface로 시작되는 부분은 유닛의 선언 영역입니다.
  이 영역에서는 uses 절을 사용해서 현재 유닛 파일에서 사용되는 다른 프로그램이나 유닛 파일을 지정합니다.
  또한, 선언 영역에서는 상수와 변수, 프로시저와 함수등을 선언할 수 있습니다.
  만약, 새로운 폼을 열어서 설계한다면, 폼의 자료형과 인스턴스 변수 등이 모두 interface영역에서 선언됩니다.
  이벤트가 발생할 때 사용되는 이벤트 핸들러의 선언문 역시 여기에 포함됩니다.
  이 영역에는 uses 절, 새로운 자료형을 정의하는 type절, 변수를 선언하는 var절, 그 밖에 상수를 선언하는 const 절 등이 포함됩니다. 
3. uses 절
  현재 유닛 파일에 포함시킬 다른 유닛을 지정하는 데 사용됩니다.
  uses절은 interface 영역뿐 아니라, implementation 영역에서도 사용될 수 있습니다.
  interface 영역의 uses 절에서는 프로그램 설계와 관련된 유닛들의 목록,
  예를 들어 여러가지 컴포턴트들을 선언하고 잇는 유닛들을 포함시키지만,
  implementation 영역의 uses 절에서는 설계시보다는 실행시에 필요한 유닛들
  (주로, 객체들을 동적으로 사용할 때나 폼이 없는 유닛들)의 목록을 포함시킵니다.
  implementation 영역에서 uses를 사용하는 대표적이 예로 MDI 응용 프로그램이 있습니다.
  MDI 응용 프로그램에서는 종속 창(하위 창)을 실행 시간에 원하는 대로(다수의 객체) 생성해야 하므로
  implementation 영역의 uses 절에서 하위 창에 대응하는 유닛을 포함시켜야 합니다.
4. type 절
  유닛에 정의된 자료형을 나열합니다.
  위의 그림에서는 TForm1 이라는 클래스를 정의하고 있는데, 실제로 이 클래스는 유닛에 대응하는 폼을 하나의 객체로 정의하고 있습니다.
5. var 절
  유닛에서 사용 될 전역 변수를 선언합니다.
6. implementation (처리영역)
  implementation 영역은 선언 영역에서 선언했던 모든 함수나 프로시저의 코드를 실제로 작성하는 곳입니다.
  이 영역에도 함수나 프로시저, 상수, 변수 등의 선언문을 포함시킬 수 있지만,
  이곳에서 선언되는 내용은 다른 유닛에서 참조할 수 없고, 단지 현재 유닛 파일에서만 사용할 수 있습니다.
7. initialization (초기화 영역)
  유닛 파일에서 사용하는 데이터를 초기화할 필요가 있을 때에는 초기화 영역에서 데이터를 초기화해야 합니다.
  이 영역에 포함되는 코드는 유닛의 다른 어떤 부분보다 먼저 실행됩니다. 
8. finalization (정리 영역)
  유닛의 initialization 영역에 대응하는 부분으로, 주로 initialization 영역에서 할당했던 윈도우즈의 자원들을 해제하는데 사용됩니다.
  참고로, initialization 영역이나 finalization 영역의 코드는 마지막에 하나의 end 문으로 끝나야 합니다.


6. 델파이(delphi) - 자료형과 연산자

<자료형(data types)>


단순형
문자열형
구조형 
포인터형 
가변형 
정수형
문자형
대수형
열거형
범위형
실수형 
단문자열형
장문자열형
광포(Wide) 문자열형 
배열형
레코드형
집합형 
무형 포인터
유형 포인터
가변형 

1. 단순형

  1) 정수형(integer type)
   

 자료형
범위 
크기 
Shortint 
-128 ~ 127 
1바이트/부호있는 8비트
Smallint
-32768 ~ 32767 
2바이트/부호있는 16비트 
Longint
-2147483648 ~ 2147483647 
4바이트/부호있는 32비트 
Byte 
0 ~ 255 
1바이트/부호없는 8비트 
Word
0 ~ 65535 
2바이트/부호없는 16비트 
Integer 
-2147483648 ~ 2147483647
4바이트/부호있는 32비트
Cardinal 
0 ~ 21473647 
4바이트/부호없는 32비트

  2) 문자형(character type)
   

문자형
표현 범위 
AnsiChar 
1바이트 크기 또는 ASCII 코드 값에 해당하는 문자 
WideChar 
2바이트 크기 또는 유니코드(Unicode) 값에 해당하는 문자 
Char 
AnsiChar 형과 같음 
      
  3) 대수형(boolean type)
    

 대수형
크기 및 표현 범위 
ByteBool 
1 바이트의 True/False 
WordBool 
2 바이트의 True/False 
LongBool 
4 바이트의 True/False 
Boolean 
ByteBool과 같음 
 
  4) 열거형(enumerated type) - 몇 개의 항목들을 나열하고 그 순서를 값으로 가질 수 있는 자료형
   앞의 자료형들은 값의 범위가 컴파일러에 의해서 정해지지만, 열거형이나 몇몇 자료형들은 사용자가 값의 범위를 정할수 있으므로 사용자 정의형이라고도 함

  *. 사용자 정의형은 type 절에 정의해야 합니다.
  

  *. 열거형 변수를 선언할 때 나열된 값들은 해당 열거형 변수에 대해서만 일종의 상수로 취급합니다.
     예를 들어, 앞의 열거형 변수에서 사용된 Red를 새로운 변수 이름으로 선언할 수 없습니다.
   
  5) 범위형(subrange type) - 단순형들 중에서 특정 자료형이 표현할 수 있는 범위의 일부만을 범위로 가지는 자료형입니다.
      범위형도 열거형과 마찬가지로 사용자가 범위를 지정할 수 있으므로 사용자 정의 자료형입니다.
     
  6) 순서형(ordinal type) - 지금까지 설명했던 단순형들은 변수에 대입 할수 있는 값의 순서가 정해져 있으므로 순서형 이라고도 합니다.
      순서형에서는 특별한 연산이 가능합니다. 어떤 값보다 바로 앞에 있거나 뒤에 있는 구하는 연산인 경우에는 Pred와 Succ를 사용하고,
      어떤 값이 처음부터 몇번 째 위치에 있는지 알아내는 연산인 경우에는 Ord를 사용합니다.
   
  7) 실수형(real type)
   

실수형 
범위 
크기 
Real 
2.9 * e-39 ~ 17 * e38 
6 바이트 
Single 
1.5 * e-45 ~ 3.4 * e38
4 바이트
Double 
5.0 * e-324 ~ 1.7 * e308 
8 바이트
Extended 
3.4 * e-3942 ~ 1.1 * e4932 
10 바이트
Comp 
-263 ~ 263 -1
8 바이트
Currency 
-922337293685477.5808
~922337293685477.5807 
8 바이트

2. 문자열형(string type)
 
문자열 형 
설명 
ShortString 
최대 255자 길이의 문자열을 가질 수 있습니다. 
AnsiString 
임의의 길이의 ASCII 문자열을 가질 수 있습니다. 
WideString 
임의의 길이의 유니코드(Unicode) 문자열을 가질 수 있습니다. 
String 
컴파일러 지시자에 따라 ShortString 이나 AnsiString이 됩니다.
{$H+}가 사용된 경우에는 AnsiString이 되고(기본값),
{$H-}가 사용된 경우에는 ShortString이 됩니다. 

3. 구조형(structured type)
  1) 배열형(array type) - 동일한 자료형의 값들을 여러개 저장하는데 사용
    ex1>
      var
        A : array[1..10] of Integer;
        A[1] := 100;
    ex2> 범위형
      type
        SI = 1..10;
      var
        AA : array[SI] of Integer;
    ex3> 열거형
      var
        CA : array[Colors] of Integer;
        CA2 : array[Red..Blue] of Integer;
        // 이 배열 사용시 아래와 같이 해야합니다.
        CA[Red] := 1;
        CA2[Blue] := 10;
    ex4> 배열을 가지는 배열(다차원 배열)
     var
        AA : array[1..10] of array[Boolean] of Integer;
        AA[1, false] := 1;
     // 위와 같은 선언
     var
        A : array[1..10, Boolean] of Integer;

  2) 레코드형(record type) - 다른 자료형의 여러 데이터를 다루기 위해서 정의, C언어의 구조체와 비슷

  ex1>
      type
        Cities = (Seoul, Incheon, Pusan, Jinju);
        AddrInfo = record;
          Name : String;
          Sex : Char;
          City : Cities;
          Post1 : Shortint;
          Post2 : Shortint;
        end;
  ex2>
     var
       MyAddr : AddrInfo;
       ...
       MyAddr.Name := '철수';
       MyAddr.Sex := 'M';
       MyAddr.City := Seoul;
       MyAddr.Post1 := 100;
       MyAddr.Post2 := 200;
  ex3>
    var
      MyAddr : AddrInfo;
      ...
      with MyAddr do begin // begin 과 end 사이에는 MyAddr. 생략 가능
         Name := '영희';
         Sex := 'F';
         City := Pusan;
         Post1 := 100;
         Post2 := 200;
      end;     
  
  3) 집합형(set type) - 수학에서 말하는 흔히 사용되는 집합을 표현하는데 사용되는 것
    ex1>
      var
        CharSet : Set of Char;
        //  아래와 같이 표현
        CharSet := ['a', 'c', 'f'];

4. 포인터형(pointer type) - 어떤 대상을 가리키는 값을 표현하는 자료형
  일반적으로, 변수는 메모리라는 기억장소에 저장되고 포인터형 변수는 변수가 저장된 메모리 영역을 가리킵니다.
  그래서, 포인터형 변수는 일정한 범위의 값이 아니라, 변수가 저장된 메모리 영역의 주소를 값으로 가지게 됩니다.
 
  포인터(포인터형 변수)가 메모리의 유효한(사용가능한) 영역을 가리키게 하는 방법 2가지
    1) 실제로 선언된 변수의 주소를 포인터에 대입한다. - 간접 어드레싱(indirect addressing)
    2) 시스템에서 어떤 메모리 영역을 할당(allocate) 받은 후, 포인터가 그 영역을 가리키게 한다. - 동적 변수(dynamic variable)
 
  오브젝트 파스칼에서의 포인터 선언 하는 방법
    1) 무형 포인터 - Pointer 예약어 사용
      ex>
        var
          P : Pointer;

    2) 유형 포인터 - ^ 기호를 붙여서 사용
      ex1>
        var
          PI : ^Integer;
     
      ex2>
        type
          PInteger = ^Integer;
        ...
        var
          PI : PInteger;

*. 기본 자료형에 대한 유형 포인터의 예 - 널 종료 문자열(null terminated string) - c/c++에서는 \0, 오브젝트 파스칼에서는 NIL
 - 널종료문자열을 사용하려면 반드시 초기화 과정을 거쳥 한다.
    널종료문자열에 필요한 메모리를 할당 받거나 또는 널 종료 문자열이 다른 유효한 문자열이나 배열을 가리키게 해야합니다.

선언된 포인터형 
의미 
PChar  ^AnsiChar
PAnsiChar ^AnsiChar
PAnsiString  ^AnsiString
PShortString  ^ShortString 

    ex>
      var
        PI : PInteger;
        I : Integer;
        ...
        I := PI^;          // PI가 가리키는 값을 I에 대입한다.


5. 가변형(variant type) - 실행시 임의의 자료형을 포함할 수 있는 자료형,
  주로, OLE 기능 구현에 중요한 역할을 함
  ex>
    var
      V : Variant;

■ 형변환(casting) - 서로 다른 형의 변수를 대입하기 위해 하는 변환
  ex>
    I : Integer;
   C : Char;

   I := Integer(C);

<연산자(operators)와 수식>

1. 산술(arithmetic) 연산자 - 일반적인 산술 연산


연산자(operator)
연산(operation) 
피연산자(operand)
용례 
덧셈  정수형/실수형  5+5(=10), 1+1.1(=2.1)
뺄셈  정수형/실수형  10-3(=7), 100-11.1(=88.9) 
곱셈  정수형/실수형  10*10(=100), 5.5*1.1(=6.05) 
나눗셈  정수형/실수형  15/4(=3.75), 16/2.5(=6.4)
div  정수형 나눗셈  정수형  15 div 4(=3) 
mod  나머지  정수형  15 mod 4(=3) 

2. 논리(logical) 연산자 - 다양한 논리 연산을 위해 제공


연산자
연산 
피연산자
용례 
and  논리적 AND  정수형  123 and 11(=11) 
or  논리적 OR  정수형  123 or 11(=123) 
not  논리적 NOT  정수형 not o(=$ffffffff) 
xor  논리적 XOR  정수형 123 xor 11(=112) 
shl  비트를 좌측으로 이동  정수형 $ffff shl 4(=$fff0) 
shr  비트를 우측으로 이동  정수형  $ffff shr 4(=$0fff) 

3. 대수(boolean) 연산자  - 대수형에 대해 수행할수 있는 연산자


연산자
연산
피연산자
용례 
and  논리적 and  대수형  false and true(= false) 
or  논리적 or  대수형  false or true(=true) 
not  부정  대수형  not false(=true) 
xor  논리적 xor  대수형  false xor true(=true) 

4. 관계(relation) 연산자 - 비교 연산시 사용되는 연산자


연산자
연산 
피연산자
용례 
동일하다 비교가능한 형(단순형등) A = B 
<>  다르다  비교가능한 형(단순형등)  A <> B 
보다 크다  비교가능한 형(단순형등)  A > B
보다 작다  비교가능한 형(단순형등)  A < B 
<=  보다 같거나 크다  비교가능한 형(단순형등) A <= B 
<=  부분집합이다 집합형 A <= B 
=>  보다 작거나 크다  비교가능한 형(단순형등)  A >= B 
=>  수퍼셋이다  집합형  A >= B 
in  에 속해있다  집합형(연산자 우측)과
그 원소(연산자 좌측) 
'a' in S 

5. 문자열 연산자


연산자
연산 
피연산자 
용례 
접합 
문자열형 
'ABC'+'DEF'(='ABCDEF') 

6. 집합 연산자 - 일반적인 집합의 연산을 수행


연산자
연산 
피연산자
용례 
합집합 
집합형 
A+B(=A와 B의 합집합) 
차집합 
집합형 
A-B(=A의 B에 대한 합집합) 
교집합 
집합형 
A*B(=A와 B의 교집합) 

7. 포인터 연산자


연산자 연산  피연산자 용례 
변수의 주소를 돌려 줍니다  임의의 자료형  @A(=A의 주소) 
포인터에 다른 값을 더합니다 문자형 포인터  P+I(=P에 I를 더함) 
포인터로부터의 다른 값 만큼 뺍니다  문자형 포인터  P-I(=P에서 I를 뺌) 

ex>
  var
    P, PP : PChar;
    C, CC : Char;
    ...
    C := 'A';
    P := @C;
    PP := @CC;
    PP^ := P^;          // PP^와 P^, 그리고 CC는 'A'입니다.

Delphi : DateUtils.pas 날짜함수 정리

http://www.delmadang.com/community/bbs_view.asp?bbsNo=21&bbsCat=0&indx=209893&page=41 델파이에 날짜함수를 모아둔 DateUtils.pas 가 있습니다. ...