TEdit를 비롯하여 EDIT  컨트롤에 숫자만 입력받도록 하는 방법은?

 

여러가지가 있겠지만

 

간단히 GWL_STYLE을 변경해주므로 가능합니다.

가끔 필요한데 생각이 나지 않아서 찾아야 하는데.. 찾는 수고를 덜기 위해서 여기에 ....

 

@C++Builder에서

 

  
void __fastcall TDLG_MANAGE::FormCreate(TObject *Sender) 

     SetWindowLong(Edit1->Handle,GWL_STYLE,GetWindowLong(Edit1->Handle,GWL_STYLE)|ES_NUMBER); 
}
     

 

@ Delphi 에서

 

  
procedure TForm1.FormCreate(Sender: TObject); 
begin 
  SetWindowLong(Edit1.Handle,GWL_STYLE,GetWindowLong(Edit1.Handle,GWL_STYLE) or ES_NUMBER); 
end;
     

 

 

@기타  Edit Style

 

ES_AUTOHSCROLL

에디트 컨트롤 내에 텍스트를 입력할 때 에디트 영역의 크기를 넘기면 자동으로 수평 스크롤된다.

ES_AUTOVSCROLL

여러 줄의 에디트 컨트롤 내에 텍스트를 입력할 때 자동으로 수직스크롤된다.

ES_CENTER

여러 줄의 에디트 컨트롤에서 텍스트를 가운데로 정령한다.

ES_LEFT

텍스트를 좌측으로 정렬한다.

ES_LOWERCASE

에디트 컨트롤에 소문자의 입력만을 허용한다. 대문자가 입력되면 자동으로 소문자로 바뀐다.

ES_MULTILINE

여러 줄의 에디트 컨트롤을 만든다. 엔터키를 개행 문자(Carriage Return)로 인식시키려면 ES_WANTRETURN 스타일을 이용해야 한다.

ES_NOHIDESEL

에디트 컨트롤에 입력 초점을 가지고 있지 않더라도 선택 영역 표시가 없어지지 않도록 한다.

ES_NUMBER

에디트 컨트롤에 숫자만이 입력될 수 있도록 한다.

ES_OEMCONVERT

입력된 텍스트는 Windows 문자셋에서 OEM 문자 세트로 변환되며 다시 Windows 세트로 되돌려진다. 이는 CharToOem 함수를 사용했을 때 변환이 정확히 일어나게 해준다.

(OEM - See original equipment manufacturer.)

ES_PASSWORD

입력되는 각 문자를 암호 문자로 표시한다. 디폴트 암호 문자는 애스터리스크(*)이다. 암호문자를 변경 하려면 ES_SETPASSWORDCHAR 메시지를 이용한다. 

ES_READONLY

읽기 전용 컨트롤을 생성하여 사용자가 컨트롤 내에 텍스트를 입력하거나 편집할 수 없도록 한다.

ES_RIGHT

여러 줄의 에디트 컨트롤에서 텍스트를 오른쪽으로 정렬한다.

ES_UPPERCASE

에디트 컨트롤에 대문자의 입력만을 허용한다. 소문자가 입력되면 자동으로 대문자로 바뀐다.

ES_WANTRETURN

엔터키를 여러 줄의 에디트 컨트롤에서 개행 문자로 인식하도록 한다. 디폴트는 엔터키를 주르면 대화 상자 내의 디폴트 버튼을 선택하게 되며 이 때에는 ctrl-enter 키가 개행 문자 역할을 한다.

 출처: http://www.nuno21.net/bbs/board.php?bo_table=vbcpp&wr_id=81

join문

 

6-1.full join
join 문중에서 가장 간단한 join문이라는 특징이 있으며 full join은 다음과 같이 설명할 수 있습니다.

>select * from tableA, tableB;

일반적인 join문은 양쪽 테이블의 레코드 갯수를 곱한 수만큼 검색을 하기 때문에 join을 사용할 때에는 주의해서 사용해야 합니다. 자칫 잘못걸린 join문은 검색속도를 저하시키고 전반적인 시스템의 성능저하를 유발시킬 수 있기 때문입니다.
다음의 예제는 full join의 형식과 일치하며 모두 같은 값을 출력합니다.

>select * from tableA, tableB;
>select * from tableA join tableB;
>select * from tableA cross join tableB;

 

6-2. straight_join
이 join문은 칼럼의 순서를 from절에 나오는 테이블의 순서대로 출력하는 join 입니다. 경우에 따라 MySQL은 속도를 빠르게 하기 위해 나름대로 내부적으로 from절에 나온 테이블의 순서를 바꾸는 경우가 있습니다. 이때 칼럼의 순서를 from 절에 나오는 순서대로 바꾸기 위해  straight_join을 사용하면 되니다.

 

 

6-3 theta join
full join문에 where 를 걸게 되면 theta join입니다.

>select * from tableA, tableB where
->tableA.b=tableB.b;

 

 

6-4. inner join
>select * from tableA INNER JOIN tableB USING(b);
또는
>select * from tableA INNER JOIN tableB ON
->tableA.b=tableB.b;
where절 대신에 ON을 사용하여 비교하고자 하는 컬럼을
직접 지정해 주는 방식. USING는 지정된 공통컬럼명을
ON으로 지정한것과 동일한 효과를 가짐.

 

 

6-5. NATURAL JOIN
두개의 테이블에 같은 이름을 가진 컬럼들이 있고
그 컬럼들을 기준으로 join을 하려 한다면 natural join을
사용합니다.
>select * from tableA natural join tableB;


추가 예제)
join문을 사용할 때 select 되는 컬럼의 지정방법
select tableA.x, tableB.x from tableA, tableB;

같은 결과 alias를 사용한 방법
select a.x, b.x from tableA as a, tableB as b;

 

 

6-6. left outer join
tableA와 tableB 를 join하여 검색할때 where 절의
tableA.b=tableB.b라고 검색하면 두 테이블의 b컬럼에
일치하는 data만을 불러 오지만 만약 tableB.b의 값이
tableA.b에 존재하지 않는 값을 가지고 있는 레코드까지
가져와야 할 경우 사용.
>select * from tableA left outer join tableB using(b);

ex)
>select * from grade left outer join study_report
->using(student_name);

 

 

6-7. right outer join
left outer join과는 반대의 개념으로
tableA와 tableB을 join하여 검색할 경우 tableB
기준으로 tableA에 값이 존재 하지 않는 것을
가져와야 할 경우 사용

※ 참고
outer 는 명시적 옵션이므로 생략가능


C/C++ 언어는 기본 데이터형을 최소화하기 위해서 많이 사용하는 형식의 데이터형만을 기본 데이터형
으로 정의하고 나머지는 프로그래머가 데이터형을 정의해서 사용할수 있도록 만들어졌습니다. 그래서
기본데이터형으로 char, int, float, double 을 제공하고 나머지 형식은 프로그래머가 배열, 포인터,
typedef, 구조체, 공용체 같은 문법을 가지고 직접 정의해서 사용하면 됩니다.
 
배열과 같은 문법으로 사용자 정의 데이터형을 만들면 동일한 데이터형만을 그룹지을수 있기 때문에
단순한 형태만 정의가능하다는 단점이 있는데 이것을 보완하기 위해 만들어진게 구조체라는 문법입니다.
 
구조체는 서로 다른 데이터형을 하나의 데이터로 군집화하여 사용할 수 있도록하는 사용자 정의
데이터형입니다. 따라서 구조체는 동일 데이터형을 군집화하여 사용할 수 있는 배열보다 자유로운
구성이 가능합니다. 그래서 사용자 정의 데이터형을 가장 잘 표현할 수 있는 문법입니다.
 
이 강좌에서는 구조체를 사용하여 사용자 정의 데이터형을 만드는 방법과 만들어진 데이터형을 사용하는
방법에 대해서 소개하도록 하겠습니다.
 
 
1. 구조체 정의하기
 
    구조체를 정의할 때에는 다음과 같은 형식을 사용합니다. 이렇게 선언된 구조체명이 새로 만들어진
    데이터형의 이름이됩니다. 즉, int char 와 같은 역할을 하게됩니다.
 
    struct 구조체명 {
        데이터형 변수명;
        ...
    };
 
    구조체는 struct 키워드를 선두에 명시한 후 사용할 구조체명을 적어서 정의합니다. 이 때 구조체
    내부를 구성하는 데이터는 미리 정의된 데이터형으로 선언해야하고, 각 데이터는 " ; " 키워드로
    분리해야합니다. 예를 들어 이름, 나이, 키, 몸무게와 같은 인적사항을 저장하는 People 이라는
    구조체를 정의하면 다음과 같습니다.
 
    struct People {
        char name[20];
        int age;
        double height;
        double weight;
    };
 
    위에서도 말했듯이 구조체 내부의 데이터는 미리 정의된 데이터형이여야하기 때문에 char, int, double
    등과 같은 기본 데이터형 외에 다른 구조체나 사용자가 따로 정의한 데이터형을 사용하고 싶으면
    이 구조체보다 먼저 정의되어 있어야합니다.
 
    일반적이지는 않지만 한번만 선언해서 사용하는 경우 아래와 같이 구조체명을 생략해서 사용하는
    경우도 있습니다. 즉, 구조체를 정의함과 동시에 data 라는 변수를 선언하기 때문에 이 데이터형을
    다시 사용할 필요가 없다면 구조체명도 필요없기 때문에 생략 가능합니다.
 
    struct {
        char name[20];
        int age;
        double height;
        double weight;
    } data;
 
 
2. 구조체 사용하기
 
    정의된 구조체는 구조체명을 이용하여 변수를 선언하듯이 선언해주면 되는데 C 언어에서 구조체를
    이용하여 변수를 선언할 때에는 반드시 구조체명 앞에 "struct" 키워드를 붙여주어야합니다.
 
    // People 구조체를 사용하여 data 변수를 선언한다.
    struct People data;
 
    C++ 언어로 구조체를 선언할 때에는 struct 키워드를 생략하여 선언할 수 있지만 C 언어의 경우에는
    구조체를 선언할 때마다 struct 키워드를 명시해야 하기때문에 아래와 같이 typedef 명령어를 이용
    하여 구조체를 또다른 데이터 타입으로 정의하여 사용하기도 합니다.
 
    typedef struct People PEOPLE;
 
    이렇게 선언하면 C 언어에서도  People 구조체를 사용하여 변수를 선언할때 struct 키워드를
    적지 않게되어 좀더 편리하게 사용할수 있습니다.
 
    PEOPLE data;  // struct People data;
 
    하지만, 구조체 정의 따로 typedef 정의 따로 사용하는 방식이 프로그램을 이해하기에 불편할수도
    있기 때문에 이것을 아래와 같이 한번에 사용하여 구조체를 정의하기도 합니다.
 
    // struct people { ... } 구조체를 PEOPLE 이라는 데이터형으로 정의한다.
    typedef struct People{
        char name[20];
        int age;
        double height;
        double weight;
    } PEOPLE;
  
    // data 라는 변수명으로 people 구조체를 선언한다.
    PEOPLE data;
 
    최근에는 C++ 를 사용하는 사람들이 많아짐에따라 struct 가 생략가능해지면서 typedef 을 사용하는
    형식도 점차 줄어들고 있습니다.
   
    구조체로 선언한 데이터형도 기본데이터형(char, int, ...)과 동일한 데이터 형이기 때문에 변수 선언시
    배열, 포인터 문법을 아래와 같이 그대로 사용할수 있습니다.
 
    PEOPLE data;      // 일반 변수
    PEOPLE list[20];  // 배열
    PEOPLE *p;         // 포인터
 
    이렇게 선언된 구조체 변수는 아래의 코드처럼 구조체의 요소에 접근할 때에는 " . " 를 이용하여
    구조체의 "변수명.요소명" 과 같은 형식을 사용합니다.
     PEOPLE one;
 
    strcpy(one.name, "운영진");
    one.age = 23;
    one.height = 179.9;
    one.weight = 70;
 
     
 
 
    그리고 메모리를 동적으로 할당하여 선언하고, 사용하는 방법은 다음과 같습니다.
 
    PEOPLE *two = (PEOPLE *)malloc(sizeof(PEOPLE));
    strcpy((*two).name, "사용자");
    (*two).age = 30;
    (*two).height = 185;
    (*two).weight = 75;
 
    위 코드에서 *two.age 라고 하지 않고 (*two).age 라고 사용한 이유는 " * "  연산자보다 " . " 연산자의
    연산자 우선순위가 높기때문에 정확한 표현을 하기 위해서입니다. 따라서 ( ) 를 생략하면 전혀
    다른 의미로 해석되어 컴파일시에 오류가 발생합니다.
 
    이렇게 연산자 우선순위 때문에 구조체를 포인터 형식으로 사용하면 ( ) 을 적어야 하는 불편함이
    생기는데 이런 불편함을 줄여주기 위해서 C/C++ 에서는 " -> "  라는 약식 표현법이 제공됩니다.
    이 약식 표현법으로 위 코드를 다시 적으면 아래와 같습니다.
 
     PEOPLE *two = (PEOPLE *)malloc(sizeof(PEOPLE));

    strcpy(two->name, "사용자");
    two->age = 30;
    two->height = 185;
    two->weight = 75;
 
     
 
 
3. 구조체의 크기와 메모리 배열 ( struct member alignment )
 
    구조체의 크기는 일반적으로 구조체를 구성하는 데이터형의 크기를 합산한 값입니다. 따라서
    위에서 정의한 People 데이터형은 40 바이트 입니다. 하지만, VC++ 에서는 데이터 처리의
    수행능력을 높이기 위해서 "struct member alignment" 을 사용하기 때문에 위 구조체의 크기가
    40 바이트 일수도 아닐수도 있습니다.
 
    Windows 32비트 운영체제는 레지스터의 크기, 데이터 버스의 크기, 데이터 처리 단위, 포인터의 크기
    등이 모두 4 바이트로 되어 있어서 해당 크기로 연산하고, 처리하는 것이 속도가 더 빠릅니다. 그래서 
    컴파일 옵션에 따라서 구조체를 해석할때 그 배열을 짝수 또는 4의 배수로 재구성하는 작업을
    수행하기 때문에 실제로 구조체가 구성되는 것이 조금 다를 수 있습니다.
    ( People 구조체는 다행이도 짝수 배열이 유지되어 struct member alignment 사용해도 크기가
      동일하기 때문에 다른 구조체를 정의하여 설명하도록 하겠습니다. )
 
    typedef struct Test {
        char a;       // 1 바이트의 데이터 크기를 가짐
        int b;          // 4 바이트의 데이터 크기를 가짐
        short int c;  // 2 바이트의 데이터 크기를 가짐
        int d;          // 4 바이트의 데이터 크기를 가짐
        char e;       // 1 바이트의 데이터 크기를 가짐
    } TEST;
 
    위와 같이 정의된 TEST 구조체를 선언하면 12 바이트의 메모리가 할당된다고 생각할 수도 있지만
    구조체를 구성하고 저장하는 단위가 4 바이트이기 때문에 b 나 d 같은 4 바이트 이상의 크기를 가지는
    변수가 4의 배수 주소 값에 위치하도록 아래와 같은 형태로 메모리가 사용되어 20 바이트의 메모리가
    할당됩니다.
 
    
 
    그렇기때문에 쓸데없는 메모리의 낭비를 막기 위해서는 아래와 같이 데이터를 구성하는 순서를
    변경하여 구조체를 정의하는 것이 좋습니다.
 
    typedef struct Test {
        int b;          // 4 바이트의 데이터 크기를 가짐
        int d;          // 4 바이트의 데이터 크기를 가짐
        short int c;  // 2 바이트의 데이터 크기를 가짐
        char a;       // 1 바이트의 데이터 크기를 가짐
        char e;       // 1 바이트의 데이터 크기를 가짐
    } TEST;
 
    위와 같이 구조체를 정의하면 4의 배수 주소에 위치해야하는 b, d 가 선두에 먼저 배치되고 c, a, e 는
    4바이트 내에 모두 저장되어 아래의 그림처럼 메모리 낭비가 생기지는 것을 볼 수 있습니다. 최악의
    경우 20 바이트의 크기를 가졌던 구조체가 데이터의 배치만 변경하여 12 바이트의 크기로 줄어들게
    되었습니다.
 
    
 
    b, d 와 같은 4 의 배수 크기를 가진 데이터뿐만 아니라 c 변수같은 2 바이트의 크기를 가진 데이터는
    짝수 주소에 저장되려는 특징이 있기때문에 c, a, e 순서로 정의하지 않고, 아래와 같이 a, c, e 순서로
    정의하면 메모리가 아래의 그림처럼 구성되어서 16 바이트의 크기를 가지게 됩니다.
 
    typedef struct Test {
        int b;          // 4 바이트의 데이터 크기를 가짐
        int d;          // 4 바이트의 데이터 크기를 가짐
        char a;       // 1 바이트의 데이터 크기를 가짐
        short int c;  // 2 바이트의 데이터 크기를 가짐
        char e;       // 1 바이트의 데이터 크기를 가짐
    } TEST;
 
    
 
    이처럼 구조체를 정의할 때 어떻게 배치하는가에 따라 구조체의 크기가 변경될 수 있기때문에
    메모리를 낭비하지 않도록 주의해야하며, 프로그래밍을 하다가 구조체의 크기를 명시해야하는
    경우에는 수치 값이 아닌 sizeof 매크로를 사용하여 구조체의 크기를 반환받아 사용해야합니다.
 
    TEST *data = (TEST *)malloc(12);                    // 위험한 표현
    TEST *data2 = (TEST *)malloc(sizeof(TEST)); // 안전한 표현


RAD Studio(Delphi, C++빌더) 단축키 입니다.

(엠바카데로 문서 자동 번역 후 일부 보정했습니다.)


컴파일 시 여러건의 오류를 이동하는 단축키를 묻는 분이 있어 찾아보니 Alt + F7, Alt + F8이 있었네요.(저도 모르고 여지껏 마우스로 클릭했네요.^^)

다양한 단축키 알아두시면 개발도 빠르게 하고, 디버깅도 빠르게 할 수 있겠네요.


바로 가기작업

Alt + [

해당 구분 기호를 찾습니다 (앞으로).

Alt + ]

해당 구분 기호를 찾습니다 (역방향).

Alt + ←

Alt + ↑ 또는 Ctrl + 클릭 (선언 부로 이동) 작업 이전 위치로 돌아갑니다.

Alt + F7

Messages View에 표시되기 전에 오류 또는 메시지의 위치로 이동합니다.

Alt + F8

Messages View에 표시된 다음 오류 또는 메시지의 위치로 이동합니다.

Alt + PgDn

다음 탭으로 이동합니다.

Alt + PgUp

이전 탭으로 이동합니다.

Alt + →

Alt + ← 작업 이전 위치로 이동합니다.

Alt + Shift + ↓

커서를 한 줄 아래로 이동하여 원래의 커서 위치의 오른쪽에서 단일 열에을 선택합니다.

Alt + Shift + End

커서 위치부터 현재 줄의 끝까지 선택합니다.

Alt + Shift + Home

커서 위치부터 현재 줄의 처음까지 선택합니다.

Alt + Shift + ←

왼쪽의 열을 선택합니다.

Alt + Shift + PgDn

커서를 한 화면 아래로 이동하고 원래의 커서 위치를 유지합니다.

Alt + Shift + PgUp

커서를 한 화면 위로 이동하고 원래의 커서 위치를 유지합니다.

Alt + Shift + →

오른쪽의 열을 선택합니다.

Alt + Shift + ↑

커서를 한 줄 위로 이동하여 원래의 커서 위치의 오른쪽에서 단일 열에을 선택합니다.

Alt + ↑

선언 부로 이동합니다.

Click + Alt + Mousemove

열 단위 블록을 선택합니다.

Ctrl + /

선택한 코드 블록의 각 행에 // 를 추가하여 코드를 주석으로 처리하거나, 제거합니다.

Ctrl + Alt + F12

열려있는 파일의 드롭 다운 목록을 표시합니다.

Ctrl + Alt + Shift + End

커서 위치에서 화면의 끝까지 열을 선택합니다.

Ctrl + Alt + Shift + Home

커서 위치에서 화면의 시작까지 열을 선택합니다.

Ctrl + Alt + Shift + ←

왼쪽의 열을 선택합니다.

Ctrl + Alt + Shift + PgDn

커서 위치에서 현재 파일의 끝까지 열을 선택합니다.

Ctrl + Alt + Shift + PgUp

커서 위치에서 현재 파일의 시작 부분까지 열을 선택합니다.

Ctrl + Alt + Shift + →

오른쪽의 열을 선택합니다.

Ctrl + BackSpace

커서의 왼쪽으로 한 단어를 삭제합니다 (앞의 공백까지의 문자가 삭제됩니다.)

Ctrl + Click

선언 부로 이동합니다.

Ctrl + Delete

현재 선택된 블록을 삭제합니다.

Ctrl + ↓

아래에 한 줄 스크롤합니다.

Ctrl + End

파일의 끝으로 이동합니다.

Ctrl + Enter

커서 위치의 파일을 엽니 다.

Ctrl + Home

파일의 시작 부분으로 이동합니다.

Ctrl + I

커서 위치에 탭 문자를 삽입합니다.

Ctrl + J

템플릿 팝업 메뉴를 엽니 다.

Ctrl + K + n

커서 위치에 책갈피 설정 ( n 은 0 ~ 9의 숫자).

Ctrl + K + E

현재 단어를 소문자로 변환합니다.

Ctrl + K + F

현재 단어를 대문자로 변환합니다.

Ctrl + K + T

커서 위치의 한 단어를 선택합니다.

Ctrl + ←

한 단어 왼쪽으로 이동합니다.

Ctrl + n

책갈피로 이동합니다 ( n 은 0-9의 책갈피 번호).

Ctrl + N

커서 위치에 줄 바꿈을 삽입합니다.

Ctrl + O + C

열 단위 블록 모드를 선택합니다.

Ctrl + O + K

열 단위 블록 모드를 해제합니다.

Ctrl + O + L

행 방향 블록 모드를 선택합니다.

Ctrl + O + O

컴파일러 옵션을 삽입합니다.

Ctrl + P

다음 문자를 ASCII 시퀀스로 해석합니다.

Ctrl + PgDn

화면의 맨 아래로 이동합니다.

Ctrl + PgUp

화면 상단으로 이동합니다.

Ctrl + Q + #

커서 위치에 책갈피를 설정합니다.

Ctrl + →

한 단어 오른쪽으로 이동합니다.

Ctrl + Shift + C

커서 위치의 클래스 선언에 대응하는 클래스 보완을 시작합니다.

Ctrl + Shift + #

커서 위치에 책갈피를 설정합니다.

Ctrl + Shift + B

버퍼 목록을 표시합니다.

Ctrl + Shift + ↓

선언에서 구현 또는 구현에서 선언으로 이동합니다.

Ctrl + Shift + Enter

사용 항목을 검색합니다.

Ctrl + Shift + J

동기화 편집 모드를 선택합니다.

Ctrl + Shift K-A

모든 코드 블록을 확장합니다.

Ctrl + Shift K + C

모든 클래스를 축소합니다.

Ctrl + Shift K + E

코드 블록을 축소합니다.

Ctrl + Shift K-G

초기화 / 종료 또는 인터페이스 / 구현

Ctrl + Shift K + M

모든 메서드를 축소합니다.

Ctrl + Shift K + N

네임 스페이스 / 단위를 축소합니다.

Ctrl + Shift K + O

코드 축소를 활성화 또는 비활성화 전환합니다.

Ctrl + Shift K + P

중첩 된 절차를 축소합니다.

Ctrl + Shift K + R

모든 영역을 축소합니다.

Ctrl + Shift K-T

현재 블록의 축소 및 확장을 전환합니다.

Ctrl + Shift K-U

코드 블록을 확장합니다.

Ctrl + Shift + End

커서 위치에서 현재 파일의 끝까지 선택합니다.

Ctrl + Shift + G

새로운 글로벌 고유 식별자 (GUID)를 삽입합니다.

Ctrl + Shift + Home

커서 위치에서 현재 파일의 처음까지 선택합니다.

Ctrl + Shift + I

선택된 블록을 들여 씁니다.

Ctrl + Shift + ←

커서의 왼쪽으로 한 단어를 선택합니다.

Ctrl + Shift + P

기록 된 키 스트로크 매크로를 재생합니다.

Ctrl + Shift + PgDn

커서 위치에서 화면의 하단까지를 선택합니다.

Ctrl + Shift + PgUp

커서 위치에서 화면 상단에서을 선택합니다.

Ctrl + Shift + R

키 스트로크 매크로 기록 시작 / 정지를 전환합니다.

Ctrl + Shift + →

커서의 오른쪽으로 한 단어를 선택합니다.

Ctrl + Shift + Space

코드 파라미터 팝업 창을 엽니 다.

Ctrl + Shift + T

[To-Do 항목 추가 대화 상자를 엽니 다.

Ctrl + Shift + Tab

이전 코드 페이지 (또는 파일)로 이동합니다.

Ctrl + Shift + Tab

이전 페이지로 이동합니다.

Ctrl + Shift + U

선택된 블록 들여 쓰기를 해제합니다.

Ctrl + Shift + ↑

선언에서 구현 또는 구현에서 선언으로 이동합니다.

Ctrl + Shift + Y

커서 위치부터 줄 끝까지 삭제합니다.

Ctrl + Space

코드 완성 팝업 창을 엽니 다.

Ctrl + T

오른쪽으로 한 단어를 삭제합니다 (다음 스페이스까지의 문자가 삭제됩니다.)

Ctrl + Tab

다음 코드 페이지 (또는 파일)로 이동합니다.

Ctrl + ↑

한 행 위로 스크롤합니다.

Ctrl + Y

현재 행을 삭제합니다.

F1

선택된 정규화 된 네임 스페이스의 도움말을 표시합니다.

Shift + Alt + arrow

열 단위 블록을 선택합니다.

Shift + BackSpace

커서의 왼쪽 문자를 삭제합니다.

Shift + ↓

커서를 한 화면 아래로 이동하여 원래의 커서 위치의 오른쪽에서 현재 위치까지 선택합니다.

Shift + End

커서 위치부터 현재 줄의 끝까지 선택합니다.

Shift + Enter

커서 위치에 새 줄을 삽입합니다.

Shift + Home

커서 위치부터 현재 줄의 처음까지 선택합니다.

Shift + ←

커서의 왼쪽 문자를 선택합니다.

Shift + PgDn

커서를 한 화면 아래로 이동하여 원래의 커서 위치의 오른쪽에서 현재 위치까지 선택합니다.

Shift + PgUp

커서를 한 화면 위로 이동하여 원래의 커서 위치의 왼쪽에서 현재 위치까지 선택합니다.

Shift + →

커서의 오른쪽 문자를 선택합니다.

Shift + Space

공백을 삽입합니다.

Shift + Tab

커서를 왼쪽으로 한 탭 위치로 이동합니다.

Shift + ↑

커서를 한 줄 위로 이동하여 원래의 커서 위치의 왼쪽에서 현재 위치까지 선택합니다.

출처: http://blog.hjf.pe.kr/159

"Editplus" 와 "Visual Studio 2010" 컴파일러 연동하기


C/C++ 코딩을 할 때 알고리즘을 풀이 하거나 기본적인 테스트를 위해서

Visual Studio를 실행하면 너무 무겁기에 Editplus 를 사용하는 편이다.


하지만 Editplus는 컴파일러가 내장되어 있지 않기 때문에 Visual Studio에 있는 컴파일러를 사용하기로 한다.

먼저 환경변수 등록을 해야 한다.


[컴퓨터] -> [속성] -> [고급 시스템 설정] -> [환경변수]




[시스템 변수]

1. Path 항목에 2가지를 추가한다.

C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin

C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE


2. 새로 만들기를 눌러 "LIB" 항목을 새로 만들고 다음 경로를 추가한다.

C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\lib


3. 새로 만들기를 눌러 "INCLUDE" 항목을 새로 만들고 다음 경로를 추가한다.

C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include


★ 경로를 추가할 때 다른 값들과 구별되기 위해서 세미콜론 ";"을 반드시 넣도록 한다. 


------------------------------------------------------------------------------------------


그 다음은 EditPlus 에서의 설정 내용


[도구] -> [사용자 도구 구성] -> [Group1] 에서 -> [추가>>]



메뉴제목 : C/C++ Compile (적당히 적는다.)

명령 : C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\cl.exe

인수 : $(FilePath)

디렉토리 : $(FileDir)

(출력 내용 캡처 항목을 체크한다.)



메뉴제목 : Run (적당히 적는다.)

명령 : $(FileNameNoExt)

인수 :

디렉토리 : $(FileDir)


★ EditPlus 설정을 마치면 적용을 누르고 프로그램을 종료하고 다시 켜야한다. 


컨트롤 + 1 => 컴파일

컨트롤 + 2 => 실행



다음과 같이 내용이 출력되면 제대로 설정되었다.

★ 하지만 kernel32.lib 파일이 없다고 나올 경우 


C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Lib 여기서 Kernel32.lib 파일을 찾아서

C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\lib 이쪽으로 복사 붙여넣기 해준다.


출처: http://osebin.tistory.com/48


[데브기어] 델파이 기본 교육_1.프로젝트 시작하기
게시자: 데브기어
18:16
[데브기어] 델파이 기본 교육_2.프로젝트소스와프로젝트관리
게시자: 데브기어
30:04
[데브기어] 델파이 기본교육_3.Unit 구조와 코드작성1
게시자: 데브기어
29:45
[데브기어] 델파이 기본교육_4.코드작성2(프로시저와함수)
게시자: 데브기어
28:03
[데브기어] 델파이 기본교육_5.Unit 구조와 코드작성3(클래스)
게시자: 데브기어
45:43
[데브기어] 델파이 기본 교육_6.개체와컴포넌트사용방법1
게시자: 데브기어
44:33
[데브기어] 델파이 기본 교육_7.개체와 컴포넌트 사용방법2
게시자: 데브기어
13:19
[데브기어] 델파이 기본 교육_8.개체와 컴포넌트 사용방법(수동)
게시자: 데브기어
43:39
[데브기어] 델파이 기본 교육_9.폼띄우기
게시자: 데브기어
1:03:06
[데브기어] 델파이 기본 교육_10.폼의 속성과 이벤트
게시자: 데브기어
27:40
[데브기어] 델파이 기본 교육_11.메뉴 작성 컴포넌트 설명
게시자: 데브기어
46:46
[데브기어] 델파이 기본 교육_12.메모장만들기
게시자: 데브기어
33:50
[데브기어] 델파이 기본 교육_13.메모장만들기2
게시자: 데브기어
29:57
[데브기어] 델파이 기본 교육_14.메모장만들기3(스프래쉬화면과 리포지토리)
게시자: 데브기어
51:12
[데브기어] 델파이 기본 교육_15.델파이와 DB연결과 dbExpress
게시자: 데브기어
24:52
[데브기어] 델파이 기본 교육_16.인사관리 화면(연결과 조회)
게시자: 데브기어
57:00
[데브기어] 델파이 기본 교육_17.인사관리(편집과차)
게시자: 데브기어
45:55
[데브기어] 델파이 기본 교육_18.부서관리
게시자: 데브기어
34:35
[데브기어] 델파이 기본 교육_19.예외(Exception)처리
게시자: 데브기어
31:49
[데브기어] 델파이 기본 교육_20.스토어드 프로시저
게시자: 데브기어
11:52
[데브기어] 델파이 기본 교육_21.트랜잭션처리(최종)
게시자: 데브기어
22:51



+ Recent posts