시작하기 전에 Google을 통해 정직하고 진심으로 반복해서 철저히 검색해 왔지만 찾지 못했다는 점을 지적하고 싶습니다.
(개발중인 프로젝트의 경우) 모든 Delphi 목록 (2007 년부터 최신 릴리스 버전까지, 2007 년 이전 버전은 더 이상 지원하지 않음) “언어 기능”과 해당 기능이 도입 된 버전 및 ( 해당되는 경우) 지원 중단, 개선 또는 제거되었습니다.
이전에 Stack Overflow에서 이와 유사한 질문을 언급했지만, 대부분은 “어떤 기능이 가장 좋은지”라는 형식으로 표현되었고 부적합하다고 간주되어 종료되었습니다.
누군가가 그러한 목록을 알고 있다면 (또는 하나를 컴파일하기에 충분한 시간이 있다면) 매우 감사 할 것입니다.
수락 된 답변에는 해당 목록에 대한 링크 또는 목록 자체가 포함됩니다.
답변
이 답변 은 새로운 VCL / FMX 기능이
아닌 새로운 언어 기능 만 나열 합니다.
다음은 RAD Studio docwiki에 대한 링크입니다.
- Rad Studio 10.3 Rio의 새로운 기능
- Delphi 및 C ++ Builder 10.2 Tokyo의 새로운 기능
- Delphi 및 C ++ Builder 10.1 Berlin의 새로운 기능
- Delphi 및 C ++ Builder 10 Seattle의 새로운 기능
- Delphi 및 C ++ Builder XE8의 새로운 기능
- Delphi 및 C ++ Builder XE7의 새로운 기능
- Delphi 및 C ++ Builder XE6의 새로운 기능
- Delphi 및 C ++ Builder XE5의 새로운 기능
- Delphi 및 C ++ Builder XE4의 새로운 기능
- Delphi 및 C ++ Builder XE3의 새로운 기능
- Delphi 및 C ++ Builder XE2의 새로운 기능
- Delphi 및 C ++ Builder XE의 새로운 기능
- Delphi 및 C ++ Builder 2010의 새로운 기능
- Delphi 및 C ++ Builder 2009의 새로운 기능
- RAD Studio의 새로운 기능 (Delphi for Win32 2007)
- RAD Studio의 새로운 기능 (C ++ Builder 2007)
- Delphi 2006의 새로운 기능
- Delphi 2005의 새로운 기능
- Delphi 7의 새로운 기능
- Delphi 6의 새로운 기능
- Delphi 5의 새로운 기능
- Delphi 4의 새로운 기능
- Delphi 3의 새로운 기능
- Delphi 2의 새로운 기능
- Delphi 1 기능
Embarcadero의 전체 목록 : 새로운 기능
참조 : David I의 목록
요약:
Delphi 10.3.x, 10.4 (아직 출시 되지 않음, 추측 성임)
- 사용자 지정 관리 레코드
- Nullable 유형
- macOS 64 비트 지원
- Android 64 비트 지원
- 64 비트 Linux 컴파일러는 더 이상 ARC 를 사용하지 않고 대신 Windows 컴파일러와 동일한 기본 수동 관리 방식을 사용합니다. 따라서 Windows 또는 OSX에서 Linux로 코드를 훨씬 쉽게 이식 할 수 있습니다.
- 자동 유형 추론을 사용하는 인라인 변수
- Linux에서 활성화 된 8 비트 AnsiChar / AnsiString 지원.
- C ++ Builder와 Delphi는 이제 모든 호출에 동일한 ABI를 사용합니다.
- Linux 서버 앱 지원 (LLVM 및 ARC를 사용하는 Intel 64 비트).
@
연산자를 사용하여 포인터에 동적 배열을 할당하는 것은 배열을 하드 캐스팅 할 때만 허용됩니다.- 유닛 이름의보다 유연한 네임 스페이스 확인
- 모든 플랫폼에서 Utf8String 및 RawByteString 유형에 대한 기본 지원
[weak]
,[unsafe]
및[volatile]
속성은 모든 컴파일러에서 지원됩니다.- OSX에서 확장 된 크기는 이제 16 바이트입니다.
- 클래스 및 레코드 도우미는 확장하는 클래스 또는 레코드의 개인 멤버에 액세스 할 수 없습니다 .
- Android 6.01까지 지원합니다.
- Android 5.1.1 및 iOS 8.4 지원
- 향상된 OSX 예외 처리
- 64 비트 iOS 지원;
- 새로운 정수 유형 : FixedInt , FixedUInt 모든 플랫폼에서 32 비트 정수 유형;
- 새로운 플랫폼 종속 정수 유형 : LongInt , LongWord (iOS-64에서는 64 비트, 기타 모든 플랫폼에서는 32 비트);
- 동적 배열에서 지원되는 문자열 유사 연산
- RTL에 추가 된 병렬 라이브러리
-
function IsManagedType(T: TypeIdentifier): Boolean;
function HasWeakRef(T: TypeIdentifier): Boolean;
function GetTypeKind(T: TypeIdentifier): TTypeKind;
function IsConstValue(Value): boolean;
- Android 지원;
배포를 위해 ArmV6 + Neon 또는 ArmV7 장치가 필요합니다. 조건부 정의 ANDROID
도입 - 클래스에 대한 연산자 오버로딩 (그러나 NextGen 컴파일러 {Android / iOS}에만 해당)
-
XE4에는 다음과 같은 새로운 조건이 도입 / 활성화되었습니다.
AUTOREFCOUNT
CPUARM
EXTERNAL_LINKER
IOS
NEXTGEN
UNDERSCOREIMPORTNAME
WEAKREF
WEAKINSTREF
WEAKINTREF- iOS에 대한 지원이 다시 도입되었습니다.
- 외부 라이브러리의 종속성을 지정하는 새로운
dependency
지시문 (XE8까지 문서화되지 않음). - NextGen 컴파일러에서 ARC 지원 ( TObject.DisposeOf 포함 ).
ARC에 대한 기초 작업의 대부분은 이미 XE3에 있었지만 대부분 비활성화되었습니다. - XE4 릴리스하기 전에
$IF
문은 종료 될 수있다$IFEND
, 그리고$IFDEF
,$IFNDEF
,$IFOPT
지침은 종료 될 수있다$ENDIF
.
XE4에서는 $ ENDIF가 $ IF, $ IFDEF, $ IFNDEF 및 $ IFOPT에 대해 승인 된 종료자가되도록 변경되었습니다.
- 내장 유형에 대한 기록 도우미
- iOS에 대한 지원이 제거되었습니다.
- 원자 고유 기능 :
AtomicExchange()
,AtomicIncrement()
,AtomicCmpExchange()
,AtomicDecrement()
- [ref] 속성 소개 .
- Mac OSX (32 비트) 및 iOS에 대한 교차 플랫폼 지원;
- Win64 지원;
- 크로스 플랫폼을 지원하도록 수정 된 RTL;
Packed
이제 레코드의 바이트 정렬을 강제합니다 (XE2 이전에는 반드시이 작업을 수행하지는 않았습니다)-
8 개의 새로운 DEFINE이 추가되었습니다.
ALIGN_STACK
CPUX86
CPUX64
MACOS (Mac 운영 체제)
MACOS32
PC_MAPPED_EXCEPTIONS
PIC
WIN64 - 이제
uses
절에 전체 단위 범위 이름이 필요합니다 . {$ExcessPrecision on/off}
컴파일러 지시문 (x64 만 해당)- 내장 유형은 대상 플랫폼 (32/64 비트)에 따라 다릅니다.
- 확장 데이터 유형은 Win32에서는 10 바이트이지만 Win64에서는 8 (!) 바이트입니다.
{$STRINGCHECKS}
컴파일러 지시어는 XE에서 무시됩니다;{$ALIGN}
지시문의 새 16 바이트 값 : 지시문에 허용되는 값은{$ALIGN}
이제 1, 2, 4, 8 및 16을 포함합니다.- new
{$CODEALIGN}
지시문은 프로 시저 또는 함수의 시작 주소를 설정합니다. {$STRONGLINKTYPES ON}
지침- 정규식 지원.
- 향상된 Delphi RTTI (런타임 유형 정보).
- 속성
as
작업자는 추출 된 객체에 대한 인터페이스 참조 위로 캐스팅하는데 사용될 수있다.is
오퍼레이터 인터페이스 참조가 특정 클래스로부터 추출되었는지 여부를 확인하기 위해 사용될 수있다.- 인터페이스에서 일반적으로 안전하지 않은 캐스팅을 수행 할 수 있습니다
TObject(SomeInterface)
.. - new
delayed
지시문은 DLL과 같은 외부 라이브러리가 선언시로드되지 않고 메서드에 대한 첫 번째 호출까지 대기 함을 나타냅니다. - 클래스 생성자 / 소멸자
string
이제 내장 유형이에 매핑됩니다UnicodeString
.{$HighCharUnicode on|off}
컴파일러 지시문- 제네릭 ;
function Default(T): T
내장 함수 (문서화되지 않음)- 스마트 포인터 ;
- 익명 메서드 ;
- 중첩 된 예외 및 예외 추적 지원 ;
- pointermath 및 새로운 컴파일러 지시문 지원 :
{$PointerMath on|off}
; - 4 개의 새로운 컴파일러 경고 :
W1057 Implicit string cast from '%s' to '%s'
,W1058 Implicit string cast with potential data loss from '%s' to '%s'
,W1059 Explicit string cast from '%s' to '%s'
,W1060 Explicit string cast with potential data loss from '%s' to '%s'
;
Exit
함수 결과를 지정하는 파라미터를 취할 수있다;resourcestrings
Widestrings로;TObject
있다 여분 숨겨진 포인터TMonitor
의 VMT 포인터에 추가를;deprecated
키워드는 이제 추가 텍스트를 가질 수 있습니다
- 내가 아는 언어 변경이 없습니다.
Delphi 2007은 non-breaking 릴리스이며 D2006의 DCU는 D2007에서 변경되지 않고 작동합니다 . - (2007 년의 .NET ‘성격’은 제네릭을 도입했습니다 )
- 향상된 기록 ;
- 연산자 오버로딩 ;
static
방법 및 속성;- 클래스 도우미 ;
- FastMM은 기본 메모리 관리자입니다.
strict
개인 / 보호 가시성 키워드 ;final
가상 방법에 대한 키워드;{$METHODINFO}
지령;
for ... in
루프,inline
예어- uses 문에서 와일드 카드 허용
- 중첩 유형
- 중첩 된 상수
{$REGION}
/{$ENDREGION}
지시문
- 세 가지 추가 컴파일러 경고 :
- Unsafe_Type,
- Unsafe_Code 및
- Unsafe_Cast. 이러한 경고는 기본적으로 비활성화되어 있지만 활성화 할 수 있습니다.
- 새로운 컴파일러 지시문
{$WARN UNSAFE_CODE ON}
TFormatSettings
구조를 사용하여 숫자, 날짜-시간 값 및 통화를 형식화하고 구문 분석하는 루틴의 오버로드 .
[TCustomVariantType][68]
사용자 정의 변형 유형에 대한 연산자 오버로딩 제공- 새로운 컴파일러 지시문 :
{$IFDEF MSWINDOWS}
{$IFDEF LINUX}
{$LIBPREFIX}
{$LIBSUFFIX}
{$LIBVERSION}
{$MESSAGE 'message'}
{$SetPEFlags}
{$IF}{$ELSE}
컴파일러 지시문 지원- 컴파일러 힌트 지침 :
experimental
,deprecated
,library
,platform
(하지만 사용되지 않는 추가적인 텍스트없이) - Variant는 더 이상 COM을 기반으로하지 않지만 CLX와 호환되도록 변경되었으며 COM 기반 변형은 다음으로 이름이 변경되었습니다.
OLEVariant
- 유형이 지정된 상수는 (으로 재정의 )에 할당 할 수 없습니다.
{$J+}
- 열거 된 유형에 명시 적 값을 할당 할 수 있습니다 (C ++ 참조).
- 인터페이스 속성
varargs
외부 함수 호출 지원 (그러나cdecl
호출 규칙 에만 해당 )- 맞춤 변형
새로운 언어 기능은 없지만 :
- 동적 배열
LongWord
및Int64
;Cardinal
UINT32 (부호없는 31 비트 값 이전)Real
8 바이트를 취하고 다음과 동일합니다double
(이전에는 6 바이트였습니다).- 새
{$REALCOMPATIBILITY ON}
컴파일러 지시문으로 재정의하십시오 . REAL48
이전 6 바이트를 대체합니다real
.
- 새
- 을지 지하다
resourcestrings
- 메서드 오버로딩
- 기본 매개 변수
{$EXTERNALSYM}
및{$NODEFINE}
지침implements
속성에 대한 키워드
- Wordbool, LongBool입니다 및 bytebool 저장소
true
로서-1
1 대신 (부울 변하지) - 구성 요소는를 사용하여 설치해야합니다
packages
. - 주장.
out
매개 변수.Widestring
interface
및dispinterface
키워드 및 COM (dispid
) 지원.
답변
Johan 의 답변을 보완하기 위해 내 블로그에서이 항목을 확인 List of changes between versions of Delphi (Since Delphi 5)
하고 The TIndex
델파이 2005 이후 대부분의 새로운 기능과 각 기능에 대한 리소스를 나열한 우수한 페이지 를 확인하십시오.
답변
jedi.inc Dephi JEDI 프로젝트에서 사용하는 파일은 기능을 정의하는 일련의를 제공합니다. 프로젝트가 MPL과 호환되는 경우 기능 감지에 사용할 수도 있고 특정 휠을 재발 명하는 수고를 덜 수 있습니다.
예를 들어 SUPPORTS_FOR_IN
컴파일러가 열거자를 지원하는지 여부를 정의 합니다. IFDEF
특정 컴파일러 버전을 확인하는 대신 해당 정의를 확인하는 데 열거 자 코드를 래핑 할 수 있습니다 .