RAD Studio 10.4에서 변경 된 문법들을  정리 해 보았습니다. 

 

통합 메모리 관리  

델파이 메모리 관리는 이제 개체 메모리 관리의 고전적인 구현을 사용하여 지원되는 모든 플랫폼 (모바일, 데스크탑 및 서버)에 통합되었습니다.기존의 ARC(Automatic  Reference Counting) 메모리 관리 기능은  훌륭하지만 항상 기존의 메모리 관리 방식을 사용하는 데스크탑 컴파일러와 호환되지 않았으며 메모리 소유주 모델 또는 TComponent 및 파생 클래스를 기반으로 하는 라이브러리와 일치하지 않았습니다. 통합 메모리관리로 인해 델파이 메모리 관리가 모든 버전에서 통합되어 기존 코드와의 호환성이 향상되고 컴포넌트, 라이브러리 및 사용자 애플리케이션의 코딩이 단순화 해집니다. 결과적으로 델파이 데스크탑 코드가 이제 모바일 플랫폼과 더 잘 호환된다는 것을 의미합니다.  ARC 모델은 모든 플랫폼에서 문자열 관리 및 인터페이스 유형 참조를 위해 유지됩니다. 

C ++  영향 : 메모리 관리            

new/delete를 통해 모든 오브젝트를 생성하고 해제 합니다. 델파이 스타일 클래스 (델파이로 구현 된 클래스 또는 C++로 구현 된 델파이 클래스의 자손의 일반적인 생성 및 삭제는 힙에 할당 된 일반 C++ 클래스와 마찬가지로 일반적인 메모리 관리를 따릅니다

C ++의 델파이 스타일 클래스에서는  스택 할당이 지원되지 않았습니다. 마찬가지로 make_unique <>를 사용할 수 없습니다                            

모바일 플랫폼에서 NextGen 제한 사항 제거 

델파이 모바일 컴파일러는 NextGen 플래그 및 관련 언어 제한을 비활성화합니다. 이제 모바일 플랫폼에서 Char 및 AnsiString과 같은 타입을 사용할 수 있다는 것을 의미합니다. 그러나 ANSI 및 코드 페이지와 같은 일부 윈도우 개념은 실제로 모바일에 존재하지 않으므로 Numeric 캐릭터 값이 플랫폼 간에 동일하게 매핑되지는 않습니다. 물론 이것은 유니 코드 문자열 (델파이의 기본 문자열 유형은 UTF-16를 기반으로 합니다.)에는 해당하지만 1 바이트 문자열에는 해당되지 않습니다.                   

 

이러한 변경 사항에 따라 모든 플랫폼에서  {$ ZEROBASEDSTRINGS OFF}를 사용하여  []를 통해 문자열 요소 액세스에 대한 기본값을 수정했습니다. 0 로부터 시작하는 문자열 액세스 모드를 사용하지 않도록 설정했음에도 불구하고 이는 []에만 해당되며, TStringHelper 메서드는 항상 그랬듯이 0부터 시작하는 문자열 위치 카운팅을 사용하는 동일한 모델을 계속 사용합니다. 

문자열

                

인덱싱은 다음과 같습니다.

               

●  델파이 문자열 타입 헬퍼 : 0 기반                        

●  델파이 플랫 함수들 : 1 기반

             ●  C ++ : 항상 1 기반입니다. 플랫폼, 데스크탑 또는 모바일과 관계 없이 모든 C ++ 구현 코드 (AnsiString 및                          UnicodeString 포함)는 1 기반입니다.  인덱싱은 여전히 델파이 헬퍼와 일치하지 않지만 C ++로만 작업하는           C++  개발자의 경우 C ++에서 동작이 1 기반으로 일관됩니다.

커스텀 매니지드 레코드(Custom Managed Record)

델파이 언어에 추가된 주요 문법으로, 델파이 레코드 타입은 이제 초기화(Initialization), 종료(finalization), 그리고 복사 연산자를 직접 작성할 수 있습니다. 개발자들은 레코드 생성, 복사, 파괴하는 각 단계에서 실행될 코드를 직접 작성해 지정할 수 있습니다. 이 추가기능을 잘 활용한다면 클래스보다 더 효과적으로 사용할 수도 있습니다.

비트 카운팅 표준 기능

 

아래에 나열된 일반적인 저수준(Low Level) 비트 처리 작업을 위한 새로운 표준 기능이 도입되었습니다.

                

  • 선행 제로 수 카운트

        매개 변수 X의 최상위 1 비트 앞에 있는 선행 0 비트 수를 계산합니다. X가 0이면 비트 너비를 리턴합니다.                                     즉 CountLeadingZeros32의 경우 32, CountLeadingZeros64의 경우 64입니다.

          function CountLeadingZeros32(X: Cardinal): Integer;

          function CountLeadingZeros64(X: UInt64): Integer;                     

                        

  • 후행 제로 수 카운트        

       매개 변수 X의 최하위 1 비트 다음에 오는 후행 0 비트 수를 계산합니다. X가 0이면 비트 너비를 리턴합니다. 

          즉, CountTrailingZeros32의 경우 32, CountTrailingZeros64의 경우 64입니다.                             

          function CountTrailingZeros32(X: Cardinal): Integer; 

          function CountTrailingZeros64(X: UInt64): Integer

   

  • 파라미터 개수 카운팅

       파라미터 X의 1의 개수를 계산합니다. 반환 값의 범위는 0 ~ 비트 폭 너비 사이입니다.

            즉 CountPopulation32의 경우 32, CountPopulation64의 경우 64입니다.

 

           function CountPopulation32(X: Cardinal): Integer; 

           function CountPopulation64(X: UInt64): Integer;             

번호 제목 글쓴이 날짜 조회 수
공지 [DelphiCon 요약] 코드사이트 로깅 실전 활용 기법 (Real-world CodeSite Logging Techniques) 관리자 2021.01.19 725821
공지 [UX Summit 요약] 오른쪽 클릭은 옳다 (Right Click is Right) 관리자 2020.11.16 723608
공지 [10.4 시드니] What's NEW! 신기능 자세히 보기 관리자 2020.05.27 725667
공지 RAD스튜디오(델파이,C++빌더) - 고객 사례 목록 관리자 2018.10.23 729082
공지 [데브기어 컨설팅] 모바일 앱 & 업그레이드 마이그레이션 [1] 관리자 2017.02.06 729328
공지 [전체 목록] 이 달의 기술자료 & 기술레터 관리자 2017.02.06 725232
공지 RAD스튜디오(델파이, C++빌더) - 시작하기 [1] 관리자 2015.06.30 736685
공지 RAD스튜디오(델파이,C++빌더) - 모바일 앱 개발 사례 (2020년 11월 업데이트 됨) 험프리 2014.01.16 931051
1242 [2020년 상반기] 기술자료 TOP 10 - 개발자들이 가장 많이 클릭한 기술자료는? 관리자 2020.07.07 2069
1241 이 달의 기술자료 - 2020년 07월 험프리 2020.06.25 2397
1240 [발표자료] 20200623 코로나19, 데이터와 RAD로 방역하다! file 관리자 2020.06.24 2034
1239 [10.4 시드니 신기능 Deep Dive] 겟잇 패키지 매니저의 새로운 기능들 관리자 2020.06.22 1916
1238 북마크, 탐색기 - 무료 IDE 애드온 기능들 업데이트! (10.4용) 관리자 2020.06.16 1477
1237 [REST-무료제공툴] REST 디버거 - REST 서비스를 언제든 신속하게 분석할 수 있습니다. file 험프리 2020.06.15 2280
1236 [기술백서] 소프트웨어 개발사에게 영향을 주는2020 시장 트렌드 TOP5 관리자 2020.06.11 1477
1235 [발표자료] 20200609 What's NEW! RAD스튜디오 10.4 시드니 file 관리자 2020.06.10 1421
» [10.4 시드니 신기능 Deep Dive] 델파이 추가된 문법 및 변경 사항 김원경 2020.06.05 1477
1233 [10.4 시드니 신기능] iOS와 맥OS 지원 강화 관리자 2020.06.04 2925
1232 [10.4 시드니 신기능] 고해상도 DPI용 VCL 콘트롤(들) 관리자 2020.06.04 3005
1231 [10.4 시드니 신기능] 개발환경 강화 관리자 2020.06.04 2701
1230 [10.4 시드니 신기능] 언어 서버 프로토콜 (LSP, Language Server Protocol) 관리자 2020.06.04 2973
1229 [RAD Studio 10.4 패치1 ] C ++ 디버깅과 누락 파일 패치 – 패치를 설치하는 새로운 방법! file 김원경 2020.06.01 1841
1228 [기술백서] 델파이와 Windows 개발 현황 (Windows 개발 관련 핵심 사항 정리) 관리자 2020.05.29 1829
1227 이 달의 기술자료 - 2020년 06월 file 험프리 2020.05.29 1533
1226 [10.4 시드니 신기능] 델파이 10.4 런타임 라이브러리 향상 file 김원경 2020.05.28 1827
1225 [10.4 시드니 신기능] Sarina Dupont이 정리한 주요 신기능 모아 보기 험프리 2020.05.28 7603
1224 [10.4 시드니 신기능] Win64 C++용 새로운 디버거 험프리 2020.05.26 2819