Jump to content
과거의 기술자료(읽기 전용): https://tech.devgear.co.kr ×
과거의 기술자료(읽기 전용): https://tech.devgear.co.kr

이 사이트 검색

검색 태그: '언어'.

  • 태그로 검색

    태그 사이를 쉼표(,)로 구분하세요.
  • 작성자로 검색

콘텐츠 유형


게시판

  • 엠바카데로 (Embarcadero) 개발도구: 델파이 (Delphi), C++빌더 (C++Builder), RAD 스튜디오 (RAD Studio)
    • [기술 Q&A 게시판] 델파이, C++빌더, RAD 스튜디오
    • [설치/등록 Q&A 게시판] 델파이, C++빌더, RAD 스튜디오
    • [기술 기고 게시판] 델파이, C++빌더, RAD 스튜디오
    • [포트폴리오 게시판] 내가 참여한 프로젝트/프로그램 소개
    • [구인 게시판] 개발자 채용/프로젝트 의뢰
  • 엠바카데로 (Embarcadero) DBMS: 인터베이스 (InterBase)
    • [기술 Q&A 게시판] 인터베이스
    • [설치/등록 Q&A 게시판] 인터베이스
    • [기술 기고 게시판] 인터베이스
  • 비주얼 스튜디오 (Visual Studio) 관련 도구
    • [기술 Q&A 게시판] 비주얼 어시스트
    • [설치/등록 Q&A 게시판] 비주얼 어시스트
    • [기술 기고 게시판] 비주얼 어시스트
  • 구록 (Gurock) 테스트도구: 테스트레일 (TestRail)
    • [기술 Q&A 게시판] 테스트레일
    • [설치/등록 Q&A 게시판] 테스트레일
    • [기술 기고 게시판] 테스트레일
  • 아이데라 (Idera) 데이터 도구: 아쿠아 데이터 스튜디오 (Aqua Data Studio), ER/Studio 등
    • ER스튜디오 (ER/Studio)
    • 아쿠아 데이터 스튜디오 (Aqua Data Studio)
  • API레이어 (Apilayer) 개발 도구: API레이어 (Apilayer)
    • [Q&A 게시판] API레이어 (Apilayer)
  • 엠바카데로 (Embarcadero) 라이선스 서버: ELC (Enterprise License Center)
    • [게시판] ELC (Enterprise License Center) 라이선스 서버
  • 이 사이트 이용 관련
    • [게시판] 이 사이트 관련 이용 팁과 Q&A

Categories

  • 이달의 기술자료: 엠바카데로
  • 비디오 세미나
    • UX Summit
    • DelphiCon
    • CodeRage
    • 데브기어 세미나
    • Skill Sprint
  • 기술백서(PDF)

Categories

  • 시작하기
  • 설치/등록/라이선스
  • 튜토리얼
  • 도서

Categories

  • RAD 스튜디오 역사관
  • 11 알렉산드리아
  • 10.4 시드니
  • 10.3 리오
  • 10.2 도쿄
  • 10.1 베를린
  • 10.0 시애틀
  • XE8~XE
  • 2010~6.0

...에서 결과 찾기

검색어 일치 조건


최초 작성일

  • Start

    End


최종 변경일

  • Start

    End


개수로 필터링...

가입

  • Start

    End


Group


자주 쓰는 도구

  1. Kori

    2010~6.0 언어와 컴파일러

    << 위로 이동 (최신 버전 포함 모든 버전) RAD 스튜디오 2010~6.0 "새 기능 한글 요약본: 언어와 컴파일러" 입니다. 모든 새 기능, 강화된 기능, 버그 픽스 등에 대해서는 Docwiki의 What's New 목록 (영문 보기, 한글번역 보기) 와 관련 페이지를 보기 바랍니다. □ [2010] RTTI를 통해 애플리케이션 런타임 시 메소드, 필드, 속성 정보를 조회할 수 있습니다. RTTI 강화와 어트리뷰트 델파이 2010에서 델파이의 RTTI가 대폭 강화되었습니다. 이제 RTTI가 메소드, 필드, 속성을 지원하게 되어 동적 호출과 다른 메타 프로그래밍 방식들을 지원하게 되었습니다. 새로 추가된 RTTI.pas 유닛을 통해 강력한 RTTI 루틴들을 뒷받침합니다. 어트리뷰트(attribute)는 이 새로운 RTTI를 기반으로 한 문법으로서, 클래스/레코드나 클래스의 멤버에 추가로 지정되는 정보이며, 실행 중에 읽어질 수 있습니다. 어트리뷰트를 활용하면 일반화된 프레임워크를 개발할 때 아주 유용합니다. □ [2010] DLL 함수가 호출될 때 DLL을 로드하도록 구현할 수 있습니다. DLL 지연 로딩 Delphi 2010에서는 DLL의 로딩 방법으로서 정적(static) 로딩, 동적(dynamic) 로딩 외에 지연(delayed) 로딩이 추가되었습니다. 지연 로딩은 정적 로딩과 기본적으로 같은 구문을 사용하지만 extern 선언에서 delayed 지시어를 추가하는 것입니다. procedure ProcInDll; external 'DLL_name.dll' delayed; 정적 로딩 구문에 단지 delayed 지시어를 추가한 것 뿐이지만, 이것만으로도 해당 DLL 함수가 실제로 호출될 때까지 해당 DLL을 로드하지 않습니다. 이전의 정적 로딩을 사용하면 코딩이 단순하고 편리한 반면 해당 DLL이나 함수가 존재하지 않을 경우 프로그램 시작 자체가 실패하는 치명적인 문제가 있습니다. DLL이 이런 우려가 있을 경우에 지연 로딩을 사용하면 깔끔하게 문제가 해결됩니다. 특히 Windows 7이나 Windows Vista 등 최신 버전의 Win32에서 추가된 API들을 호출할 필요가 있으면서 동시에 Windows P, 2000 등 구버전과도 호환성이 필요한 경우 더욱 유용합니다. 또한 지연 로딩을 사용하면 실제 호출할 때까지 DLL을 로드하지 않으므로 메모리 소모도 줄어드는 효과도 있습니다. □ [2009] 명시적으로 타입을 지정하지 않고 실행 시점에 유연하게 타입을 지정하며 개발할 수 있습니다. 제너릭(Generics) 제너릭은 배열, 컬랙션, 목록 등에서 데이터타입을 명시적으로 지정하기 않고, 실행 시 필요한 데이터타입으로 사용할 수 있는 문법입니다. 다음 예제는 제너릭 타입을 이용해 목록(TList<T>) 클래스를 만들고 사용한 코드입니다. TList = class(TObject) public procedure Add(const Value: T); function Get(Index: Integer): T; end; var IntList: TList; StrList: TList; begin IntList := TList.Create; StrList := TList.Create; IntList.Add(100); StrList.Add('Hello'); IntList.Free; StrList.Free; 자세히보기 : http://tech.devgear.co.kr/406874 □ [2009] 메소드의 파라메터로 코드블록을 전달할 수 있어 유연한 코드를 작성할 수 있습니다. 익명메소드(Anonymouse Method) 이름에서 알 수 있듯이 익명메소드는 이름이 없는 프로시저나 함수입니다. 익명 메소드는 변수에 할당하거나 메소드의 파라메터로 코드 블록을 전달할 수 있습니다. type TProc = reference to procedure(Value: Integer); procedure Call(const AProc: TProc); begin AProc(10); end; procedure DoSimpleAnonymouseMethod; var Proc: TProc; begin proc := procedure(Value: Integer) begin ShowMessage(Value.ToString); end; Call(Proc); end; 익명메소드는 다른 언어의 클로저(closures)의 구조와 유사합니다. 익명메소드는 특히 쓰레드 개발 시 사용하면 유용합니다. 쓰레드 시작 코드 구현 시 쓰레드 완료 코드를 함께 구현하면 작업흐름을 한눈에 파악할 수 있어 코드의 유지보수가 편리해 집니다. 자세히보기 : http://tech.devgear.co.kr/406874 □ [2009] 유니코드 문자열 기반의 애플리케이션을 개발할 수 있습니다. 유니코드 지원 이제 델파이 언어 전체에서 유니코드가 지원됩니다. 기존 버전들에서는 String은 AnsiString을 의미했지만 이제는 유니코드를 완벽하게 지원하는 UnicodeString으로 바뀌었습니다. UnicodeString은 기존의 WideString과는 달리 AnsiString과 유사한 레퍼런스 카운팅(Reference Counting) 구조로 설계되어 훨씬 메모리 효율적이며 속도도 빠릅니다. 스트링을 버퍼로 사용해왔던 관행에 대한 대안으로 RawByteString 타입도 추가되었습니다. 자세히보기 : http://tech.devgear.co.kr/406874 □ [2006] 기존의 클래스를 수정하지도 상속받지도 않고 클래스 기능을 확장할 수 있습니다. 타입 헬퍼(Type Helper) 타입 헬퍼는 클래스, 레코드, 열거형 타입의 기능을 확장할 수 있는 문법입니다. 다음코드는 열거형에 타입헬퍼를 이용해 ToString 메소드를 확장하는 예제입니다. type TGeoDirection = (North, East, South, West); // 열거형을 문자열로 변환하는 기능 확장 TGeoDirectionHelper = record helper for TGeoDirection function ToString: string; inline; end; function TGeoDirection.ToString: string; begin case Self of TGeoDirection.North: Result := ‘북쪽 (N)’; TGeoDirection.East: Result := ‘동쪽 (E)’; TGeoDirection.South: Result := ‘남쪽 (S)’; TGeoDirection.West: Result := ‘서쪽 (W)’; else raise Exception.Create(‘Unknown “TGeoDirecton” value’); end; end; var Direction: TGeoDirection; begin Direction := South; ShowMessage(Direction.ToString); end; 자세히보기 : http://tech.devgear.co.kr/406874 □ [2006] 레코드에도 속성, 메소드, 클래스 메소드등 타입을 추가 할 수 있습니다. 메소드를 지원하는 레코드 record 선언에서 클래스처럼 필드 외에도 속성, 메소드(생성자도 포함됨), 클래스 속성, 클래스 메소드, 클래스 필드, 네스티드 타입을 가질 수 있게 되었습니다. type TMyRecord = record type TInnerColorType = Integer; var Red: Integer; class var Blue: Integer; procedure printRed(); constructor Create(val: Integer); property RedProperty: TInnerColorType read Red write Red; class property BlueProp: TInnerColorType read Blue write Blue; end; constructor TMyRecord.Create(val: Integer); begin Red := val; end; procedure TMyRecord.printRed; begin writeln('Red: ', Red); end; □ Exit; 문에 반환값을 넣을 수 있어 코드가 더 짧아 집니다. 반환값을 갖는 빠져나오는 Exit 함수 □ inline 지시자로 함수와 프로시저의 성능을 향상 시킬 수 있습니다. Inline 지시자 타입 헬퍼는 클래스, 레코드, 열거형 타입의 기능을 확장할 수 있는 문법입니다. 다음코드는 열거형에 타입헬퍼를 이용해 ToString 메소드를 확장하는 예제입니다. function Max(const X,Y,Z: Integer): Integer; inline; 델파이 컴파일러는 함수와 프로시저의 성능을 향상할 수 있는 Inline 지시자를 지정할 수 있습니다. 이 지시자는 해당 루틴을 실제로 호출하는 대신 호출하는 측에서 해당 루틴을 포함하는 코드를 생성하도록 합니다. □ 같은 유닛의 클래스에서도 변수와 메소드를 노출하지 않을 수 있습니다. srict private, strict protected 델파이에서 클래스의 속성에 대한 가시성을 결정하는 2가지 옵션이 있습니다. strict private: private는 같은 유닛에 있는 다른 클래스에서는 접근할 수 있습니다. strict private는 같은 유닛에 있는 다른 클래스에서도 접근할 수 없습니다. strict protected: strict private과 유사하며, strict protected로 선언된 변수와 메소드는 클래스 본인과 상속한 클래스에서만 접근할 수 있습니다. □ 메소드 뿐 아니라 클래스도 abstract로 선언해 추상 클래스로 만들 수 있습니다. 클래스 추상화(class abstract) 타입 헬퍼는 클래스, 레코드, 열거형 타입의 기능을 확장할 수 있는 문법입니다. 다음코드는 열거형에 타입헬퍼를 이용해 ToString 메소드를 확장하는 예제입니다. type TAbstractClass = class abstract procedure SomeProcedure; end; □ 클래스를 더이상 상속하지 못하도록 sealed로 지정할 수 있습니다. 클래스 봉인(class sealed) type TAbstractClass = class sealed procedure SomeProcedure; end; □ 클래스는 해당 클래스에서만 사용 가능한 타입 선언을 포함할 수 있습니다. 클래스 타입(class type) type TClassWithClassType = class private type TRecordWithinAClass = record SomeField: string; end; public class var RecordWithinAClass: TRecordWithinAClass; end; procedure TForm1.FormCreate(Sender: TObject); begin TClassWithClassType.RecordWithinAClass.SomeField := '이것은 클래스 타입으로 선언된 필드입니다.'; ShowMessage(TClassWithClassType.RecordWithinAClass.SomeField); end; □ 클래스는 클래스 변수를 가질 수 있습니다. 클래스 변수(class var) 이것은 클래스의 객체가 아닌 클래스 자체에 적용되는 변수입니다. 예제는 위의 “클래스 타입”을 참고하십시오. □ 클래스 선언부 에서 타입 선언을 포함시킬 수 있습니다. 중첩된 클래스 클래스 선언 내에서 타입 선언이 포함될 수 있습니다. 이 방법으로 개념적으로 관계가 있는 타입들을 같이 둘 수 있으며, 이름 충돌도 피할 수 있습니다. type TOuterClass = class strict private MyField: Integer; public type TInnerClass = class public MyInnerField: Integer; procedure InnerProc; end; procedure OuterProc; end; procedure TOuterClass.TInnerClass.InnerProc; begin ... end; □ 메소드를 더 이상 상속받지 못하도록 fianl 지시자로 막을 수 있습니다. final 지시자 오버라이드한 버추얼 메소드를 final로 표시하여 상속되는 클래스에서 해당 메소드를 더 이상 오버라이드하지 못하도록 막을 수 있습니다. TAbstractClass = class abstract public procedure Bar; virtual; end; TSealedClass = class sealed(TAbstractClass) public procedure Bar; override; end; TFinalMethodClass = class(TAbstractClass) public procedure Bar; override; final; end; □ 클래스에 스태틱 클래스 메소드를 추가할 수 있습니다. 클래스 스태틱 메소드(class static method) 클래스에 스태틱 클래스 메소드를 추가할 수 있는데, 이것은 클래스 타입으로부터 호출할 수 있는 메소드입니다. 클래스 스태틱 메소드는 객체에 대한 참조 없이도 사용이 가능합니다. 일반적인 클래스 메소드와는 달리, 클래스 스태틱 메소드는 Self 파라미터를 가지지 않습니다. 또한 객체의 멤버들을 액세스할 수도 없습니다. (클래스 필드, 클래스 속성, 클래스 메소드는 액세스할 수 있습니다) 또한 클래스 메소드와 달리 클래스 스태틱 메소드는 virtual로 선언될 수 없습니다. type TMyClass = class strict private class var FX: Integer; strict protected // 노트: 클래스 속성을 액세스하려면 클래스 스태틱으로 선언되어야 합니다. class function GetX: Integer; static; class procedure SetX(val: Integer); static; public class property X: Integer read GetX write SetX; class procedure StatProc(s: String); static; end; begin TMyClass.X := 17; TMyClass.StatProc('Hello'); end; □ 컬렉션의 요소만큼 반복하는 for-in 반복문을 사용할 수 있습니다. for-in 반복문 이제 델파이에서 컨테이너에 대해 for-요소-in-컬렉션 스타일의 반복자를 지원합니다. 컴파일러는 다음의 컨테이너 반복 패턴을 인식합니다. for Element in ArrayExpr do Stmt; for Element in StringExpr do Stmt; for Element in SetExpr do Stmt; for Element in CollectionExpr do Stmt;
  2. Kori

    XE8~XE 언어와 컴파일러

    << 위로 이동 (최신 버전 포함 모든 버전) RAD 스튜디오 XE8 ~XE "새 기능 한글 요약본: 언어와 컴파일러" 입니다. 모든 새 기능, 강화된 기능, 버그 픽스 등에 대해서는 Docwiki의 What's New 목록 (영문 보기, 한글번역 보기) 와 관련 페이지를 보기 바랍니다. □ [XE7] 동적배열을 문자열과 같이 쉽게 사용할 수 있습니다. 동적배열 개선 • 동적배열 초기화가 쉬워짐 • 문자열과 같이 + 기호로 배열을 연결 • Insert, Delete, Concat 함수 지원 var di: array of Integer; i: Integer; begin di := [1, 2, 3]; di := di + di; di := di + [4, 5]; di := [1, 2, 3, 4, 5, 6]; Insert ([8, 9], di, 4); Delete (di, 2, 1); // remove the third (0-based) for i in di do begin Memo1.Lines.Add (i.ToString); end □ [XE2] 64비트 애플리케이션을 개발할 수 있습니다. 64-비트 컴파일러 지원 델파이 XE2에서 64비트 윈도우 애플리케이션 개발을 지원합니다. 64비트 애플리케이션은 더 빠른 연산과 더 많은 메모리(4G 이상)를 사용해야 하는 경우 적합 합니다. 델파이에서는 프로젝트 매니저에서 타겟 플랫폼을 64-bit Windows로 선택 후 빌드해 64비트 애플리케이션을 개발할 수 있습니다. 만약, 여러분의 프로젝트가 VCL과 RTL만 사용한 경우 Win32와 Win64 플랫폼에서 동일한 소스코드를 사용할 수 있습니다. 자세히 보기: https://tech.devgear.co.kr/delphi_news/411111 □ [XE2] 유닛에 범위 이름을 포함해 더 명확한 유닛 이름으로 지정할 수 있습니다. 유닛 범위 이름(Unit Scope Names) 유닛 이름 앞에 범위 이름을 추가할 수 있어 유닛의 역할이 더 명확해 졌습니다. VCL과 RTL 유닛이 모두 범위이름을 포함하도록 변경되었고 여러분의 유닛에도 범위이름을 포함해 저장할 수 있습니다. 하지만 반드시 범위이름을 지정해야 하는 것은 아닙니다. 유즈절에 유닛을 추가할 때 System.SysUtils와 SysUtils는 동일한 유닛을 사용합니다.
  3. Kori

    10.0 시애틀 언어와 컴파일러

    << 위로 이동 (최신 버전 포함 모든 버전) RAD 스튜디오 10.0 시애틀 "새 기능 한글 요약본: IDE" 입니다. 모든 새 기능, 강화된 기능, 버그 픽스 등에 대해서는 Docwiki의 What's New 10.0 (영문 보기, 한글번역 보기) 와 관련 페이지를 보기 바랍니다. □ [10] 표준 C++11이 Win32에도 적용 여러분의 기존 윈도우 앱을 C++11으로 가져오세요. C++11을 준수하는 새 32-bit 윈도우 컴파일러와 클래식 bcc32 컴파일러를 같은 윈도우 프로젝트에서 손쉽게 바꾸어 반영할 수 있습니다. 자세히 보기: https://tech.devgear.co.kr/delphi_news/415119
  4. Kori

    10.3 리오 언어와 컴파일러

    << 위로 이동 (최신 버전 포함 모든 버전) RAD 스튜디오 10.3 리오 "새 기능 한글 요약본: IDE" 입니다. 모든 새 기능, 강화된 기능, 버그 픽스 등에 대해서는 Docwiki의 What's New 10.3 (영문 보기, 한글번역 보기) 와 관련 페이지를 보기 바랍니다. 10.3 리오 - 언어와 컴파일러 관련 주요 업데이트 요약 [10.3.2] 델파이 맥OS 64-bit 애플리케이션 개발 지원 [10.3.2] C++17, 윈도우 64-bit 지원 인라인 변수 선언 타입 추론 Clang 업그레이드: C++17 지원 Win64에서 연산 성능 향상 C++ 코드 보완 개선 C++ 오류 인사이트 [10.3.2] 델파이 맥OS 64-bit 애플리케이션 개발 지원 LLVM 컴파일러 인프라를 기반으로 하는 새로운 맥OS 64-bit 플랫폼용 델파이 컴파일러가 추가되었습니다. 지금까지 지원되었던 맥OS, 윈도우, 리눅스와 같은 다른 모든 델파이 데스크탑/서버 플랫폼과 동일한 비ARC 형식입니다. 자세히 보기: https://tech.devgear.co.kr/delphi_news/454332 [10.3.2] C++17, 윈도우 64-bit 지원 최신 C++표준인 C++17을 사용하는 훌륭한 컴파일러가 제공됩니다. 최신 언어 기능들을 활용할 수 있습니다. C++17이 모든 윈도우를 완벽 지원하면서, 최신 C++ 언어 기능들을 Win32와 Win64에서 모두 활용할 수 있습니다. 자세히 보기: https://tech.devgear.co.kr/delphi_news/454349 인라인 변수 선언 델파이 언어가 10.3 버전부터 로컬 변수 선언에 있어 훨씬 더 융통적으로 변합니다. 매우 핵심적인 기능 변화라고 볼 수 있습니다. 이번 업데이트는 본래 파스칼(Pascal) 언어의 핵심 개념을 깨는 변화이기는 합니다. 하지만 이 변화는 많은 장점을 제공하며, 이를 통해 불필요한 코드를 줄일 수 있습니다. 타입 추론 인라인으로 선언 된 변수는 타입 추론의 장점이 있습니다. 직접 할당하는 인라인 변수는 형식을 지정할 필요가 없습니다. 이것은 거기에 대입 된 값에서 형식을 유추 할 수 있기 때문입니다. Clang 업그레이드: C++17 지원 C++빌더 및 RAD 스튜디오 10.3은 윈도우 32비트용 C++17을 지원하는 업데이트된 Clang 확장 컴파일러가 도입되었습니다. 점진적인 컴파일러 업그레이드의 일환으로, 최신 C++ 언어 기능을 사용해 더욱 강력하고 간결한 코드를 작성하고, 써드파티 C++ 라이브러리를 사용해 더 강력한 애플리케이션을 구축할 수 있습니다. Win64에서 연산 성능 향상 많은 C ++ 수학 함수가 새롭게 구현되었습니다. 이러한 방법은 이전 버전에 비해 평균적으로 약 2 배 빨라졌습니다. C++ 코드 보완 개선 C++ Win32 코드 보완 업데이트로 확장된 Clang 기반의 C++ 컴파일러를 사용합니다. 이로써 이전보다 훨씬 빠른 C++ 코드 보완이 가능합니다. C++ 오류 인사이트 오류 인사이트(오류 항목 아래에 빨간색 밑줄을 그어 편집기에서 코드의 문제를 미리 확인할 수 있는 기능)가 C++빌더에서도 가능해졌습니다. 새로운 Win32용 Clang 확장 컴파일러를 사용하는 경우 이 기능이 제공됩니다.
  5. Kori

    10.4 시드니 언어와 컴파일러

    << 위로 이동 (최신 버전 포함 모든 버전) RAD 스튜디오 10.4 시드니 "새 기능 한글 요약본: 언어와 컴파일러" 입니다. 10.4 시드니의 모든 새 기능, 강화된 기능, 버그 픽스 등에 대해서는 Docwiki의 What's New (영문 보기, 한글번역 보기) 와 관련 페이지를 보기 바랍니다. 10.4 시드니 - 언어와 컴파일러 관련 주요 업데이트 요약 델파이의 새로운 언어 기능: 커스텀 관리 레코드 통합 메모리 관리 C++ 라이브러리 지원 확장 델파이의 새로운 언어 기능: 커스텀 관리 레코드 델파이 언어에 추가된 주요 문법으로, 델파이 레코드 타입은 이제 초기화(Initialization), 종료(finalization), 그리고 복사 연산자를 직접 작성할 수 있습니다. 개발자들은 레코드 생성, 복사, 파괴하는 각 단계에서 실행될 코드를 직접 작성해 지정할 수 있습니다. 이 추가기능을 잘 활용한다면 클래스보다 더 효과적으로 사용할 수도 있습니다.. 자세히 보기: https://tech.devgear.co.kr/delphi_news/463262 통합 메모리 관리 델파이 메모리 관리는 지원하는 모든 플랫폼(모바일, 데스크톱 및 서버)에서 전통적인 객체 메모리 관리 방식으로 일원화되었습니다. 자동 참조카운트(ARC: Automatic Reference Counting)에 비해 기존 코드와의 호환성이 높아지고, 컴포넌트, 라이브러리, 애플리케이션 개발에 필요한 코드도 간결해집니다. ARC 모델은 모든 플랫폼 지원을 위한 문자열 관리와 인터페이스 타입 참조를 위해 유지됩니다. C++의 경우, 이러한 변화는 C++에서 델파이 스타일의 클래스 생성과 삭제가 다른 C++ 클래스의 힙-할당과 같이 일반적인 메모리 관리로 통일되므로 복잡성이 크게 줄어들게 될것입니다. C++ 라이브러리 지원 확장 10.4에서는 인기 있는 수많은 C++ 라이브러리를 C++빌더로 이식해 C++빌더에서 사용할 수 있도록 최적화했습니다. libSIMDpp, NemTode, SDL 등을 포함하며 겟잇 패키지 매니저를 통해 다운로드할 수 있습니다. Boost 1.70도 다운로드 받을 수 있습니다.
  6. 험프리

    11.0 알렉산드리아 언어와 컴파일러

    << 위로 이동 (최신 버전 포함 모든 버전) RAD 스튜디오 11.0 알렉산드리아 "새 기능 한글 요약본: 언어와 컴파일러" 입니다. 11.0 알렉산드리아의 모든 새 기능, 강화된 기능, 버그 픽스 등에 대해서는 Docwiki의 What's New (영문 보기, 한글번역 보기) 와 관련 페이지를 보기 바랍니다. 11.0 알렉산드리아 - 언어와 컴파일러 관련 주요 업데이트 요약 델파이: 이진 리터럴 및 숫자 구분기호 AVX 명령어에 대한 인라인 어셈블러 지원(AVX-512) 신규 C++ 코드 포맷터 C++ / Delphi 호환성 C++: 델파이 타입 RTTI 호환성 스마트 포인터를 델파이 클래스에서 사용 타입 변환 기타 델파이: 이진 리터럴 및 숫자 구분기호 델파이 언어는 10진수 및 16진수 외에 이진 리터럴에 대한 지원이 추가되었다. 바이너리 리터럴은 % 기호를 접두사로 사용한다 (다른 파스칼 컴파일러에서 사용하는 구문과 동일하다 ) const Four = %100; var x: Integer; begin x := %10010001; 또한 숫자가 많은 리터럴 값의 가독성을 향상시킬 수 있도록 숫자 구분 기호(밑줄, “_”)을 사용할 수 있다. 코드 구문 분석과 컴파일에서 해당 기호는 무시된다. (C# 7.0에서 도입된 기능과 유사) const AMillion = 1_000_000; // _로 구분되므로 "1백만" 임을 쉽게 알 수 있다. ANumber = %10010101_10011001_11010001_10010011"; // 바이너리 리터럴에서도 _를 사용할 수 있다. 이 숫자 구분 기호는 이진 리터럴에서도 사용할 수 있다. (예 "%10010101_10011001_11010001_10010011") AVX 명령어에 대한 인라인 어셈블러 지원(AVX-512) AVX2(ymm) 및 AVX512(zmm) 등 최신 명령어셋을 위한 asm 코드를 지원한다. 참고: (최신 인텔 CPU와 같은) AVX-512 호환 CPU가 있어야 이 기능을 테스트할 수 있다. 더 자세한 정보: https://en.wikipedia.org/wiki/Advanced_Vector_Extensions#CPUs_with_AVX-512 신규 C++ 코드 포맷터 C++에 사용되는 코드 포맷터 기술이 clang 형식으로 완전히 대체되었다. 새 C++ 포맷터 옵션은 Language > C++ > Formatting 에서 설정할 수 있다. 코드 포맷을 수동으로 지정하기는 언제든 할 수 있다. 하지만, 저장하거나 입력할 때 IDE가 자동으로 코드 포맷을 지정하도록 할 수도 있다. 'Auto formatting' 설정에서 format on save, 또는 format on newline로 지정하면 된다. IDE는 일반적인 C++ 프로젝트 규칙대로, 소스폴더의 .clang-format 파일에 지정된 포맷 설정을 사용한다. .clang-format 파일을 찾을 수 없는 경우 IDE는 (위에 있는) Options 대화창에 있는 Formatting style에 지정된 포맷을 사용한다 (기본 값은 Embarcadero 추첫 포맷이다). C++ / Delphi 호환성 이제 델파이 타입용 C++-호환 RTTI가 있다. 이제 델파이 타입을 다루는 make_shared를 사용할 수 있으며, C++로 델타이 타입을 사용할 때 도움을 주는 타입 컨버전(전환)이 들어있다. C++: 델파이 타입 RTTI 호환성 예전에는 델파이 타입에 사용할 수 있는 C++ 타입 정보가 없었다. 즉, delphi-type이 Pascal 코드에서 가져온 타입이거나 C++의 델파이 스타일 클래스인 typeid(delphi-type)의 결과에 액세스하면 AV가 발생합니다. typeid는 단순히 타입에 대한 std::typeinfo를 반환하거나, 또는 해당 인스턴스의 가장 많이 파생된 타입에 대한 다형성 형식인 경우 이를 반환한다. typeid()는 이제 std::typeinfo를 반환한다. 그리고 델파이 타입 용 C++ 호환 RTTI가 생성된다. 스마트 포인터를 델파이 클래스에서 사용 이제 std::make_unique 와 std::make_shared 모두를 델파이 클래스에서 사용 할 수 있다 (델파이 또는 C++에 정의 되었지만 델파이에 정의된 클래스에서 상속됨). 타입 변환 이제 RTL에는 델파이 타입과 C++(및 델파이) 문자열 간에 타입 변환을 하는 헬퍼 메서드가 포함되었다. 여기에는 TDateTime에서 문자열 타입으로 변환, C++ 문자열에서 델파이 문자열로 쉽게 변환(할당), 델파이 문자열에서 std::string_view 사용이 포함되었다. 이제 to_string()과 from_string() 메소드를 이용해 문자열로 변환하거나 문자열에서 변환한다. (UnicodeString, WideString 및 AnsiString, 코드 페이지로 템플릿 포함). 이 메소드를 제공하는 타입은 다음과 같다. Currency TDateTime Integer(32/64비트, 부호가 있거나/부호가 없는) 부동 소수점 타입(Extended) Variants 기타 이제 Clang 컴파일러는 인터페이스가 IUnknown에서 파생되지 않았을 때 경고를 표시한다. 이제 C++ Win64 디버거를 사용하여 프로세스에 연결할 수 있다. 프로젝트 일괄 컴파일이 .c 파일을 무시하던 문제가 해결되었다.
  7. << 위로 이동 (최신 버전 포함 모든 버전) RAD 스튜디오 11.0 알렉산드리아 "새 기능 한글 요약본: 언어와 컴파일러" 입니다. 11.0 알렉산드리아의 모든 새 기능, 강화된 기능, 버그 픽스 등에 대해서는 Docwiki의 What's New (영문 보기, 한글번역 보기) 와 관련 페이지를 보기 바랍니다. 11.0 알렉산드리아 - 언어와 컴파일러 관련 주요 업데이트 요약 델파이: 이진 리터럴 및 숫자 구분기호 AVX 명령어에 대한 인라인 어셈블러 지원(AVX-512) 신규 C++ 코드 포맷터 C++ / Delphi 호환성 C++: 델파이 타입 RTTI 호환성 스마트 포인터를 델파이 클래스에서 사용 타입 변환 기타 델파이: 이진 리터럴 및 숫자 구분기호 델파이 언어는 10진수 및 16진수 외에 이진 리터럴에 대한 지원이 추가되었다. 바이너리 리터럴은 % 기호를 접두사로 사용한다 (다른 파스칼 컴파일러에서 사용하는 구문과 동일하다 ) const Four = %100; var x: Integer; begin x := %10010001; 또한 숫자가 많은 리터럴 값의 가독성을 향상시킬 수 있도록 숫자 구분 기호(밑줄, “_”)을 사용할 수 있다. 코드 구문 분석과 컴파일에서 해당 기호는 무시된다. (C# 7.0에서 도입된 기능과 유사) const AMillion = 1_000_000; // _로 구분되므로 "1백만" 임을 쉽게 알 수 있다. ANumber = %10010101_10011001_11010001_10010011"; // 바이너리 리터럴에서도 _를 사용할 수 있다. 이 숫자 구분 기호는 이진 리터럴에서도 사용할 수 있다. (예 "%10010101_10011001_11010001_10010011") AVX 명령어에 대한 인라인 어셈블러 지원(AVX-512) AVX2(ymm) 및 AVX512(zmm) 등 최신 명령어셋을 위한 asm 코드를 지원한다. 참고: (최신 인텔 CPU와 같은) AVX-512 호환 CPU가 있어야 이 기능을 테스트할 수 있다. 더 자세한 정보: https://en.wikipedia.org/wiki/Advanced_Vector_Extensions#CPUs_with_AVX-512 신규 C++ 코드 포맷터 C++에 사용되는 코드 포맷터 기술이 clang 형식으로 완전히 대체되었다. 새 C++ 포맷터 옵션은 Language > C++ > Formatting 에서 설정할 수 있다. 코드 포맷을 수동으로 지정하기는 언제든 할 수 있다. 하지만, 저장하거나 입력할 때 IDE가 자동으로 코드 포맷을 지정하도록 할 수도 있다. 'Auto formatting' 설정에서 format on save, 또는 format on newline로 지정하면 된다. IDE는 일반적인 C++ 프로젝트 규칙대로, 소스폴더의 .clang-format 파일에 지정된 포맷 설정을 사용한다. .clang-format 파일을 찾을 수 없는 경우 IDE는 (위에 있는) Options 대화창에 있는 Formatting style에 지정된 포맷을 사용한다 (기본 값은 Embarcadero 추첫 포맷이다). C++ / Delphi 호환성 이제 델파이 타입용 C++-호환 RTTI가 있다. 이제 델파이 타입을 다루는 make_shared를 사용할 수 있으며, C++로 델타이 타입을 사용할 때 도움을 주는 타입 컨버전(전환)이 들어있다. C++: 델파이 타입 RTTI 호환성 예전에는 델파이 타입에 사용할 수 있는 C++ 타입 정보가 없었다. 즉, delphi-type이 Pascal 코드에서 가져온 타입이거나 C++의 델파이 스타일 클래스인 typeid(delphi-type)의 결과에 액세스하면 AV가 발생합니다. typeid는 단순히 타입에 대한 std::typeinfo를 반환하거나, 또는 해당 인스턴스의 가장 많이 파생된 타입에 대한 다형성 형식인 경우 이를 반환한다. typeid()는 이제 std::typeinfo를 반환한다. 그리고 델파이 타입 용 C++ 호환 RTTI가 생성된다. 스마트 포인터를 델파이 클래스에서 사용 이제 std::make_unique 와 std::make_shared 모두를 델파이 클래스에서 사용 할 수 있다 (델파이 또는 C++에 정의 되었지만 델파이에 정의된 클래스에서 상속됨). 타입 변환 이제 RTL에는 델파이 타입과 C++(및 델파이) 문자열 간에 타입 변환을 하는 헬퍼 메서드가 포함되었다. 여기에는 TDateTime에서 문자열 타입으로 변환, C++ 문자열에서 델파이 문자열로 쉽게 변환(할당), 델파이 문자열에서 std::string_view 사용이 포함되었다. 이제 to_string()과 from_string() 메소드를 이용해 문자열로 변환하거나 문자열에서 변환한다. (UnicodeString, WideString 및 AnsiString, 코드 페이지로 템플릿 포함). 이 메소드를 제공하는 타입은 다음과 같다. Currency TDateTime Integer(32/64비트, 부호가 있거나/부호가 없는) 부동 소수점 타입(Extended) Variants 기타 이제 Clang 컴파일러는 인터페이스가 IUnknown에서 파생되지 않았을 때 경고를 표시한다. 이제 C++ Win64 디버거를 사용하여 프로세스에 연결할 수 있다. 프로젝트 일괄 컴파일이 .c 파일을 무시하던 문제가 해결되었다. View full RAD 스튜디오 버전별 신기능
  8. << 위로 이동 (최신 버전 포함 모든 버전) RAD 스튜디오 10.4 시드니 "새 기능 한글 요약본: 언어와 컴파일러" 입니다. 10.4 시드니의 모든 새 기능, 강화된 기능, 버그 픽스 등에 대해서는 Docwiki의 What's New (영문 보기, 한글번역 보기) 와 관련 페이지를 보기 바랍니다. 10.4 시드니 - 언어와 컴파일러 관련 주요 업데이트 요약 델파이의 새로운 언어 기능: 커스텀 관리 레코드 통합 메모리 관리 C++ 라이브러리 지원 확장 델파이의 새로운 언어 기능: 커스텀 관리 레코드 델파이 언어에 추가된 주요 문법으로, 델파이 레코드 타입은 이제 초기화(Initialization), 종료(finalization), 그리고 복사 연산자를 직접 작성할 수 있습니다. 개발자들은 레코드 생성, 복사, 파괴하는 각 단계에서 실행될 코드를 직접 작성해 지정할 수 있습니다. 이 추가기능을 잘 활용한다면 클래스보다 더 효과적으로 사용할 수도 있습니다.. 자세히 보기: https://tech.devgear.co.kr/delphi_news/463262 통합 메모리 관리 델파이 메모리 관리는 지원하는 모든 플랫폼(모바일, 데스크톱 및 서버)에서 전통적인 객체 메모리 관리 방식으로 일원화되었습니다. 자동 참조카운트(ARC: Automatic Reference Counting)에 비해 기존 코드와의 호환성이 높아지고, 컴포넌트, 라이브러리, 애플리케이션 개발에 필요한 코드도 간결해집니다. ARC 모델은 모든 플랫폼 지원을 위한 문자열 관리와 인터페이스 타입 참조를 위해 유지됩니다. C++의 경우, 이러한 변화는 C++에서 델파이 스타일의 클래스 생성과 삭제가 다른 C++ 클래스의 힙-할당과 같이 일반적인 메모리 관리로 통일되므로 복잡성이 크게 줄어들게 될것입니다. C++ 라이브러리 지원 확장 10.4에서는 인기 있는 수많은 C++ 라이브러리를 C++빌더로 이식해 C++빌더에서 사용할 수 있도록 최적화했습니다. libSIMDpp, NemTode, SDL 등을 포함하며 겟잇 패키지 매니저를 통해 다운로드할 수 있습니다. Boost 1.70도 다운로드 받을 수 있습니다. View full RAD 스튜디오 버전별 신기능
  9. << 위로 이동 (최신 버전 포함 모든 버전) RAD 스튜디오 10.3 리오 "새 기능 한글 요약본: IDE" 입니다. 모든 새 기능, 강화된 기능, 버그 픽스 등에 대해서는 Docwiki의 What's New 10.3 (영문 보기, 한글번역 보기) 와 관련 페이지를 보기 바랍니다. 10.3 리오 - 언어와 컴파일러 관련 주요 업데이트 요약 [10.3.2] 델파이 맥OS 64-bit 애플리케이션 개발 지원 [10.3.2] C++17, 윈도우 64-bit 지원 인라인 변수 선언 타입 추론 Clang 업그레이드: C++17 지원 Win64에서 연산 성능 향상 C++ 코드 보완 개선 C++ 오류 인사이트 [10.3.2] 델파이 맥OS 64-bit 애플리케이션 개발 지원 LLVM 컴파일러 인프라를 기반으로 하는 새로운 맥OS 64-bit 플랫폼용 델파이 컴파일러가 추가되었습니다. 지금까지 지원되었던 맥OS, 윈도우, 리눅스와 같은 다른 모든 델파이 데스크탑/서버 플랫폼과 동일한 비ARC 형식입니다. 자세히 보기: https://tech.devgear.co.kr/delphi_news/454332 [10.3.2] C++17, 윈도우 64-bit 지원 최신 C++표준인 C++17을 사용하는 훌륭한 컴파일러가 제공됩니다. 최신 언어 기능들을 활용할 수 있습니다. C++17이 모든 윈도우를 완벽 지원하면서, 최신 C++ 언어 기능들을 Win32와 Win64에서 모두 활용할 수 있습니다. 자세히 보기: https://tech.devgear.co.kr/delphi_news/454349 인라인 변수 선언 델파이 언어가 10.3 버전부터 로컬 변수 선언에 있어 훨씬 더 융통적으로 변합니다. 매우 핵심적인 기능 변화라고 볼 수 있습니다. 이번 업데이트는 본래 파스칼(Pascal) 언어의 핵심 개념을 깨는 변화이기는 합니다. 하지만 이 변화는 많은 장점을 제공하며, 이를 통해 불필요한 코드를 줄일 수 있습니다. 타입 추론 인라인으로 선언 된 변수는 타입 추론의 장점이 있습니다. 직접 할당하는 인라인 변수는 형식을 지정할 필요가 없습니다. 이것은 거기에 대입 된 값에서 형식을 유추 할 수 있기 때문입니다. Clang 업그레이드: C++17 지원 C++빌더 및 RAD 스튜디오 10.3은 윈도우 32비트용 C++17을 지원하는 업데이트된 Clang 확장 컴파일러가 도입되었습니다. 점진적인 컴파일러 업그레이드의 일환으로, 최신 C++ 언어 기능을 사용해 더욱 강력하고 간결한 코드를 작성하고, 써드파티 C++ 라이브러리를 사용해 더 강력한 애플리케이션을 구축할 수 있습니다. Win64에서 연산 성능 향상 많은 C ++ 수학 함수가 새롭게 구현되었습니다. 이러한 방법은 이전 버전에 비해 평균적으로 약 2 배 빨라졌습니다. C++ 코드 보완 개선 C++ Win32 코드 보완 업데이트로 확장된 Clang 기반의 C++ 컴파일러를 사용합니다. 이로써 이전보다 훨씬 빠른 C++ 코드 보완이 가능합니다. C++ 오류 인사이트 오류 인사이트(오류 항목 아래에 빨간색 밑줄을 그어 편집기에서 코드의 문제를 미리 확인할 수 있는 기능)가 C++빌더에서도 가능해졌습니다. 새로운 Win32용 Clang 확장 컴파일러를 사용하는 경우 이 기능이 제공됩니다. View full RAD 스튜디오 버전별 신기능
  10. << 위로 이동 (최신 버전 포함 모든 버전) RAD 스튜디오 10.0 시애틀 "새 기능 한글 요약본: IDE" 입니다. 모든 새 기능, 강화된 기능, 버그 픽스 등에 대해서는 Docwiki의 What's New 10.0 (영문 보기, 한글번역 보기) 와 관련 페이지를 보기 바랍니다. □ [10] 표준 C++11이 Win32에도 적용 여러분의 기존 윈도우 앱을 C++11으로 가져오세요. C++11을 준수하는 새 32-bit 윈도우 컴파일러와 클래식 bcc32 컴파일러를 같은 윈도우 프로젝트에서 손쉽게 바꾸어 반영할 수 있습니다. 자세히 보기: https://tech.devgear.co.kr/delphi_news/415119 View full RAD 스튜디오 버전별 신기능
  11. << 위로 이동 (최신 버전 포함 모든 버전) RAD 스튜디오 XE8 ~XE "새 기능 한글 요약본: 언어와 컴파일러" 입니다. 모든 새 기능, 강화된 기능, 버그 픽스 등에 대해서는 Docwiki의 What's New 목록 (영문 보기, 한글번역 보기) 와 관련 페이지를 보기 바랍니다. □ [XE7] 동적배열을 문자열과 같이 쉽게 사용할 수 있습니다. 동적배열 개선 • 동적배열 초기화가 쉬워짐 • 문자열과 같이 + 기호로 배열을 연결 • Insert, Delete, Concat 함수 지원 var di: array of Integer; i: Integer; begin di := [1, 2, 3]; di := di + di; di := di + [4, 5]; di := [1, 2, 3, 4, 5, 6]; Insert ([8, 9], di, 4); Delete (di, 2, 1); // remove the third (0-based) for i in di do begin Memo1.Lines.Add (i.ToString); end □ [XE2] 64비트 애플리케이션을 개발할 수 있습니다. 64-비트 컴파일러 지원 델파이 XE2에서 64비트 윈도우 애플리케이션 개발을 지원합니다. 64비트 애플리케이션은 더 빠른 연산과 더 많은 메모리(4G 이상)를 사용해야 하는 경우 적합 합니다. 델파이에서는 프로젝트 매니저에서 타겟 플랫폼을 64-bit Windows로 선택 후 빌드해 64비트 애플리케이션을 개발할 수 있습니다. 만약, 여러분의 프로젝트가 VCL과 RTL만 사용한 경우 Win32와 Win64 플랫폼에서 동일한 소스코드를 사용할 수 있습니다. 자세히 보기: https://tech.devgear.co.kr/delphi_news/411111 □ [XE2] 유닛에 범위 이름을 포함해 더 명확한 유닛 이름으로 지정할 수 있습니다. 유닛 범위 이름(Unit Scope Names) 유닛 이름 앞에 범위 이름을 추가할 수 있어 유닛의 역할이 더 명확해 졌습니다. VCL과 RTL 유닛이 모두 범위이름을 포함하도록 변경되었고 여러분의 유닛에도 범위이름을 포함해 저장할 수 있습니다. 하지만 반드시 범위이름을 지정해야 하는 것은 아닙니다. 유즈절에 유닛을 추가할 때 System.SysUtils와 SysUtils는 동일한 유닛을 사용합니다. View full RAD 스튜디오 버전별 신기능
  12. << 위로 이동 (최신 버전 포함 모든 버전) RAD 스튜디오 2010~6.0 "새 기능 한글 요약본: 언어와 컴파일러" 입니다. 모든 새 기능, 강화된 기능, 버그 픽스 등에 대해서는 Docwiki의 What's New 목록 (영문 보기, 한글번역 보기) 와 관련 페이지를 보기 바랍니다. □ [2010] RTTI를 통해 애플리케이션 런타임 시 메소드, 필드, 속성 정보를 조회할 수 있습니다. RTTI 강화와 어트리뷰트 델파이 2010에서 델파이의 RTTI가 대폭 강화되었습니다. 이제 RTTI가 메소드, 필드, 속성을 지원하게 되어 동적 호출과 다른 메타 프로그래밍 방식들을 지원하게 되었습니다. 새로 추가된 RTTI.pas 유닛을 통해 강력한 RTTI 루틴들을 뒷받침합니다. 어트리뷰트(attribute)는 이 새로운 RTTI를 기반으로 한 문법으로서, 클래스/레코드나 클래스의 멤버에 추가로 지정되는 정보이며, 실행 중에 읽어질 수 있습니다. 어트리뷰트를 활용하면 일반화된 프레임워크를 개발할 때 아주 유용합니다. □ [2010] DLL 함수가 호출될 때 DLL을 로드하도록 구현할 수 있습니다. DLL 지연 로딩 Delphi 2010에서는 DLL의 로딩 방법으로서 정적(static) 로딩, 동적(dynamic) 로딩 외에 지연(delayed) 로딩이 추가되었습니다. 지연 로딩은 정적 로딩과 기본적으로 같은 구문을 사용하지만 extern 선언에서 delayed 지시어를 추가하는 것입니다. procedure ProcInDll; external 'DLL_name.dll' delayed; 정적 로딩 구문에 단지 delayed 지시어를 추가한 것 뿐이지만, 이것만으로도 해당 DLL 함수가 실제로 호출될 때까지 해당 DLL을 로드하지 않습니다. 이전의 정적 로딩을 사용하면 코딩이 단순하고 편리한 반면 해당 DLL이나 함수가 존재하지 않을 경우 프로그램 시작 자체가 실패하는 치명적인 문제가 있습니다. DLL이 이런 우려가 있을 경우에 지연 로딩을 사용하면 깔끔하게 문제가 해결됩니다. 특히 Windows 7이나 Windows Vista 등 최신 버전의 Win32에서 추가된 API들을 호출할 필요가 있으면서 동시에 Windows P, 2000 등 구버전과도 호환성이 필요한 경우 더욱 유용합니다. 또한 지연 로딩을 사용하면 실제 호출할 때까지 DLL을 로드하지 않으므로 메모리 소모도 줄어드는 효과도 있습니다. □ [2009] 명시적으로 타입을 지정하지 않고 실행 시점에 유연하게 타입을 지정하며 개발할 수 있습니다. 제너릭(Generics) 제너릭은 배열, 컬랙션, 목록 등에서 데이터타입을 명시적으로 지정하기 않고, 실행 시 필요한 데이터타입으로 사용할 수 있는 문법입니다. 다음 예제는 제너릭 타입을 이용해 목록(TList<T>) 클래스를 만들고 사용한 코드입니다. TList = class(TObject) public procedure Add(const Value: T); function Get(Index: Integer): T; end; var IntList: TList; StrList: TList; begin IntList := TList.Create; StrList := TList.Create; IntList.Add(100); StrList.Add('Hello'); IntList.Free; StrList.Free; 자세히보기 : http://tech.devgear.co.kr/406874 □ [2009] 메소드의 파라메터로 코드블록을 전달할 수 있어 유연한 코드를 작성할 수 있습니다. 익명메소드(Anonymouse Method) 이름에서 알 수 있듯이 익명메소드는 이름이 없는 프로시저나 함수입니다. 익명 메소드는 변수에 할당하거나 메소드의 파라메터로 코드 블록을 전달할 수 있습니다. type TProc = reference to procedure(Value: Integer); procedure Call(const AProc: TProc); begin AProc(10); end; procedure DoSimpleAnonymouseMethod; var Proc: TProc; begin proc := procedure(Value: Integer) begin ShowMessage(Value.ToString); end; Call(Proc); end; 익명메소드는 다른 언어의 클로저(closures)의 구조와 유사합니다. 익명메소드는 특히 쓰레드 개발 시 사용하면 유용합니다. 쓰레드 시작 코드 구현 시 쓰레드 완료 코드를 함께 구현하면 작업흐름을 한눈에 파악할 수 있어 코드의 유지보수가 편리해 집니다. 자세히보기 : http://tech.devgear.co.kr/406874 □ [2009] 유니코드 문자열 기반의 애플리케이션을 개발할 수 있습니다. 유니코드 지원 이제 델파이 언어 전체에서 유니코드가 지원됩니다. 기존 버전들에서는 String은 AnsiString을 의미했지만 이제는 유니코드를 완벽하게 지원하는 UnicodeString으로 바뀌었습니다. UnicodeString은 기존의 WideString과는 달리 AnsiString과 유사한 레퍼런스 카운팅(Reference Counting) 구조로 설계되어 훨씬 메모리 효율적이며 속도도 빠릅니다. 스트링을 버퍼로 사용해왔던 관행에 대한 대안으로 RawByteString 타입도 추가되었습니다. 자세히보기 : http://tech.devgear.co.kr/406874 □ [2006] 기존의 클래스를 수정하지도 상속받지도 않고 클래스 기능을 확장할 수 있습니다. 타입 헬퍼(Type Helper) 타입 헬퍼는 클래스, 레코드, 열거형 타입의 기능을 확장할 수 있는 문법입니다. 다음코드는 열거형에 타입헬퍼를 이용해 ToString 메소드를 확장하는 예제입니다. type TGeoDirection = (North, East, South, West); // 열거형을 문자열로 변환하는 기능 확장 TGeoDirectionHelper = record helper for TGeoDirection function ToString: string; inline; end; function TGeoDirection.ToString: string; begin case Self of TGeoDirection.North: Result := ‘북쪽 (N)’; TGeoDirection.East: Result := ‘동쪽 (E)’; TGeoDirection.South: Result := ‘남쪽 (S)’; TGeoDirection.West: Result := ‘서쪽 (W)’; else raise Exception.Create(‘Unknown “TGeoDirecton” value’); end; end; var Direction: TGeoDirection; begin Direction := South; ShowMessage(Direction.ToString); end; 자세히보기 : http://tech.devgear.co.kr/406874 □ [2006] 레코드에도 속성, 메소드, 클래스 메소드등 타입을 추가 할 수 있습니다. 메소드를 지원하는 레코드 record 선언에서 클래스처럼 필드 외에도 속성, 메소드(생성자도 포함됨), 클래스 속성, 클래스 메소드, 클래스 필드, 네스티드 타입을 가질 수 있게 되었습니다. type TMyRecord = record type TInnerColorType = Integer; var Red: Integer; class var Blue: Integer; procedure printRed(); constructor Create(val: Integer); property RedProperty: TInnerColorType read Red write Red; class property BlueProp: TInnerColorType read Blue write Blue; end; constructor TMyRecord.Create(val: Integer); begin Red := val; end; procedure TMyRecord.printRed; begin writeln('Red: ', Red); end; □ Exit; 문에 반환값을 넣을 수 있어 코드가 더 짧아 집니다. 반환값을 갖는 빠져나오는 Exit 함수 □ inline 지시자로 함수와 프로시저의 성능을 향상 시킬 수 있습니다. Inline 지시자 타입 헬퍼는 클래스, 레코드, 열거형 타입의 기능을 확장할 수 있는 문법입니다. 다음코드는 열거형에 타입헬퍼를 이용해 ToString 메소드를 확장하는 예제입니다. function Max(const X,Y,Z: Integer): Integer; inline; 델파이 컴파일러는 함수와 프로시저의 성능을 향상할 수 있는 Inline 지시자를 지정할 수 있습니다. 이 지시자는 해당 루틴을 실제로 호출하는 대신 호출하는 측에서 해당 루틴을 포함하는 코드를 생성하도록 합니다. □ 같은 유닛의 클래스에서도 변수와 메소드를 노출하지 않을 수 있습니다. srict private, strict protected 델파이에서 클래스의 속성에 대한 가시성을 결정하는 2가지 옵션이 있습니다. strict private: private는 같은 유닛에 있는 다른 클래스에서는 접근할 수 있습니다. strict private는 같은 유닛에 있는 다른 클래스에서도 접근할 수 없습니다. strict protected: strict private과 유사하며, strict protected로 선언된 변수와 메소드는 클래스 본인과 상속한 클래스에서만 접근할 수 있습니다. □ 메소드 뿐 아니라 클래스도 abstract로 선언해 추상 클래스로 만들 수 있습니다. 클래스 추상화(class abstract) 타입 헬퍼는 클래스, 레코드, 열거형 타입의 기능을 확장할 수 있는 문법입니다. 다음코드는 열거형에 타입헬퍼를 이용해 ToString 메소드를 확장하는 예제입니다. type TAbstractClass = class abstract procedure SomeProcedure; end; □ 클래스를 더이상 상속하지 못하도록 sealed로 지정할 수 있습니다. 클래스 봉인(class sealed) type TAbstractClass = class sealed procedure SomeProcedure; end; □ 클래스는 해당 클래스에서만 사용 가능한 타입 선언을 포함할 수 있습니다. 클래스 타입(class type) type TClassWithClassType = class private type TRecordWithinAClass = record SomeField: string; end; public class var RecordWithinAClass: TRecordWithinAClass; end; procedure TForm1.FormCreate(Sender: TObject); begin TClassWithClassType.RecordWithinAClass.SomeField := '이것은 클래스 타입으로 선언된 필드입니다.'; ShowMessage(TClassWithClassType.RecordWithinAClass.SomeField); end; □ 클래스는 클래스 변수를 가질 수 있습니다. 클래스 변수(class var) 이것은 클래스의 객체가 아닌 클래스 자체에 적용되는 변수입니다. 예제는 위의 “클래스 타입”을 참고하십시오. □ 클래스 선언부 에서 타입 선언을 포함시킬 수 있습니다. 중첩된 클래스 클래스 선언 내에서 타입 선언이 포함될 수 있습니다. 이 방법으로 개념적으로 관계가 있는 타입들을 같이 둘 수 있으며, 이름 충돌도 피할 수 있습니다. type TOuterClass = class strict private MyField: Integer; public type TInnerClass = class public MyInnerField: Integer; procedure InnerProc; end; procedure OuterProc; end; procedure TOuterClass.TInnerClass.InnerProc; begin ... end; □ 메소드를 더 이상 상속받지 못하도록 fianl 지시자로 막을 수 있습니다. final 지시자 오버라이드한 버추얼 메소드를 final로 표시하여 상속되는 클래스에서 해당 메소드를 더 이상 오버라이드하지 못하도록 막을 수 있습니다. TAbstractClass = class abstract public procedure Bar; virtual; end; TSealedClass = class sealed(TAbstractClass) public procedure Bar; override; end; TFinalMethodClass = class(TAbstractClass) public procedure Bar; override; final; end; □ 클래스에 스태틱 클래스 메소드를 추가할 수 있습니다. 클래스 스태틱 메소드(class static method) 클래스에 스태틱 클래스 메소드를 추가할 수 있는데, 이것은 클래스 타입으로부터 호출할 수 있는 메소드입니다. 클래스 스태틱 메소드는 객체에 대한 참조 없이도 사용이 가능합니다. 일반적인 클래스 메소드와는 달리, 클래스 스태틱 메소드는 Self 파라미터를 가지지 않습니다. 또한 객체의 멤버들을 액세스할 수도 없습니다. (클래스 필드, 클래스 속성, 클래스 메소드는 액세스할 수 있습니다) 또한 클래스 메소드와 달리 클래스 스태틱 메소드는 virtual로 선언될 수 없습니다. type TMyClass = class strict private class var FX: Integer; strict protected // 노트: 클래스 속성을 액세스하려면 클래스 스태틱으로 선언되어야 합니다. class function GetX: Integer; static; class procedure SetX(val: Integer); static; public class property X: Integer read GetX write SetX; class procedure StatProc(s: String); static; end; begin TMyClass.X := 17; TMyClass.StatProc('Hello'); end; □ 컬렉션의 요소만큼 반복하는 for-in 반복문을 사용할 수 있습니다. for-in 반복문 이제 델파이에서 컨테이너에 대해 for-요소-in-컬렉션 스타일의 반복자를 지원합니다. 컴파일러는 다음의 컨테이너 반복 패턴을 인식합니다. for Element in ArrayExpr do Stmt; for Element in StringExpr do Stmt; for Element in SetExpr do Stmt; for Element in CollectionExpr do Stmt; View full RAD 스튜디오 버전별 신기능
×
×
  • Create New...

중요한 정보

이용약관 개인정보보호정책 이용규칙 이 사이트가 더 잘 작동하기 위해 방문자의 컴퓨터에 쿠키가 배치됩니다. 쿠키 설정 변경에서 원하는 설정을 할 수 있습니다. 변경하지 않으면 쿠키를 허용하는 것으로 이해합니다.