Lista funkcji języka Delphi i wersji, w której zostały wprowadzone/wycofane
Zanim zacznę, chciałbym zaznaczyć, że szczerze i szczerze Szukałem wielokrotnie i wyczerpująco przez Google czegoś takiego i nie byłem w stanie go znaleźć.
Wymagam (dla projektu, który rozwijam) listy wszystkich Delphi (od 2007 do najnowszej wersji, nie obsługuję już żadnej wersji starszej niż 2007) "funkcji językowych", oraz wersji, w których zostały wprowadzone i (w stosownych przypadkach) przestarzałe, ulepszone lub usunięte.
Zauważyłem podobne pytania do tego na Stack Overflow wcześniej, choć większość z nich zostały sformułowane w formie "która funkcja jest najlepsza" i zamknięte jako uznane za nieodpowiednie.
Jeśli ktoś zna taką listę (lub ma wystarczająco dużo wolnego czasu, aby ją skompilować), byłbym bardzo wdzięczny.
Zaakceptowana odpowiedź będzie albo zawierała link do takiej listy, albo samą listę.
3 answers
Zauważ, że ta odpowiedź wymienia tylko nowe język funkcje
[101]} oto linki do RAD Studio docwiki:- Co nowego w Delphi i C++Builder 10.2 Tokyo
- co nowego w Delphi i C++Builderze 10.1
- co nowego w Delphi i C++Builderze 10
- Co nowego w Delphi i C++Builderze XE8
- Co nowego w Delphi i C++Builder XE7
- Co nowego w Delphi i C++Builderze XE6
- Co nowego w Delphi i C++Builderze XE5
- Co nowego w Delphi i C++Builderze XE4
- Co nowego w Delphi i C++Builderze XE3
- Co nowego w Delphi i C++Builderze XE2
- co nowego w Delphi i C++Builderze XE
- co nowego w Delphi and C++Builder 2010
- co nowego w Delphi i C++Builder 2009
- Co nowego w RAD Studio (Delphi dla Win32 2007)
- Co nowego w RAD Studio (C++Builder 2007)
- Co nowego w Delphi 2006
- Co nowego w Delphi 2005
- co nowego w Delphi 7
- Co nowego w Delphi 6
- co nowego w Delphi 5
- co nowego w Delphi 4
- co nowego w Delphi 3
- co nowego w Delphi 2
- Funkcje Delphi 1
Pełna lista z Embarcadero: Co nowego
Zobacz też: lista Dawida I
Do podsumowania:
Delphi 10.3 (codename Carnival) (to be potwierdzone)
- wsparcie dla OSX 64-bit
- typy zerowe
- wsparcie dla aplikacji serwerowych Linuksa (Intel 64-bit przy użyciu LLVM i ARC).
-
przypisanie dynamicznej tablicy do wskaźnika za pomocą operatora
@
jest dozwolone tylko podczas twardego odlewania tablicy. - bardziej elastyczna rozdzielczość przestrzeni nazw jednostki nazwy
- natywne wsparcie dla Utf8String i RawByteString typ na wszystkich platformach
- The
[weak]
,[unsafe]
i[volatile]
atrybuty {[112] } są obsługiwane przez wszystkie Kompilatory. - Rozmiar extended na OSX wynosi teraz 16 bajtów.
- pomocnicy klas i rekordów nie mogą uzyskać dostępu do prywatnych członków klas lub rekordów extend .
- wsparcie dla Androida do 6.01.
- wsparcie dla Androida 5.1.1 i iOS 8.4
- Ulepszona obsługa wyjątków OSX
-
[110]}wsparcie dla 64-bitowego iOS;
- nowe typy liczb całkowitych: FixedInt, FixedUInt 32-bitowe typy całkowite na wszystkich platformach;
- nowa platforma zależna typy całkowite: LongInt, LongWord (64-bitowe na iOS-64, 32-bitowe na wszystkich innych platformach);
- operacje typu String obsługiwane na tablicach dynamicznych
- Biblioteka równoległa dodana do RTL
-
Nowe procedury wewnętrzne kompilatora (nieudokumentowane):
function IsManagedType(T: TypeIdentifier): Boolean; function HasWeakRef(T: TypeIdentifier): Boolean; function GetTypeKind(T: TypeIdentifier): TTypeKind; function IsConstValue(Value): boolean;
- Wsparcie Dla Androida;
wymaga urządzenia z ArmV6 + Neon lub ArmV7 do wdrożenia [210]} wprowadza warunkowe definiowanie Androida - overloading operatorów dla klas (ale tylko dla kompilatora NextGen {Android/iOS})
-
Następujące nowe warunki są wprowadzane/włączane w XE4:
AUTOREFCOUNT
CPUARM
EXTERNAL_LINKER
IOS
NEXTGEN
UNDERSCOREIMPORTNAME
WEAKREF
WEAKINSTREF
WEAKINTREF- wprowadzono ponownie wsparcie dla iOS.
- Nowy
dependency
dyrektywa do określania zależności zewnętrznej biblioteki (nieudokumentowana do XE8). -
wsparcie ARC w kompilatorach NextGen (w tym TObject.DisposeOf ).
zauważ, że wiele z ARC był już w XE3, ale większość z nich została wyłączona.]} -
przed wydaniem XE4,
$IF
instrukcje mogły być zakończone tylko$IFEND
, oraz$IFDEF
,$IFNDEF
,$IFOPT
dyrektywy mogą być zakończone tylko za pomocą$ENDIF
.
W XE4 to zmieniło się tak, że $ENDIF stał się akceptowanym terminatorem dla $IF, $IFDEF, $IFNDEF i $IFOPT.
- Helpery rekordów dla typów wbudowanych
- usunięto wsparcie dla iOS.
- atomowe funkcje wewnętrzne:
AtomicExchange()
,AtomicIncrement()
,AtomicCmpExchange()
,AtomicDecrement()
- wprowadzenie atrybutu [ref] .
-
[110]} Obsługa wielu platform dla Mac OSX (32-bit) i iOS; [113]}
- wsparcie dla Win64; [[110]}zmodyfikowany RTL do obsługi cross platform; [113]}
-
Packed
teraz wymusza wyrównanie bajtów rekordów (Pre XE2 niekoniecznie to robił) -
Dodano osiem nowych definicji:
ALIGN_STACK
CPUX86
CPUX64
MACOS (System operacyjny Mac)
MACOS32
PC_MAPPED_EXCEPTIONS
PIC
WIN64 -
pełne nazwy jednostek są teraz wymagane w klauzuli
uses
. -
{$ExcessPrecision on/off}
dyrektywa kompilatora (tylko x64)
[110]} typy wbudowane różnią się w zależności od platformy docelowej (32/64-bit)
- Rozszerzony typ danych to 10 bajtów na Win32, ale 8 (!) bajtów na Win64
- dyrektywa kompilatora
{$STRINGCHECKS}
jest ignorowana w XE; - Nowa 16-bajtowa wartość dla dyrektywy
{$ALIGN}
: Dopuszczalne wartości dla dyrektywy{$ALIGN}
obejmują teraz 1, 2, 4, 8 i 16. - nowa dyrektywa
{$CODEALIGN}
, ustawia adres startowy procedury lub funkcji. - dyrektywa
{$STRONGLINKTYPES ON}
- wsparcie dla wyrażeń regularnych.
- Enhanced Delphi RTTI (Run Time Type Information).
- atrybuty
- operator
as
może być użyty do oddania odniesienia interfejsu z powrotem do obiektu, z którego został / align = "left" / - operator
is
może być użyty do sprawdzenia, czy odniesienie do interfejsu zostało wyodrębnione z pewnej klasy. - normalne niebezpieczne odlewanie może być wykonywane na interfejsie:
TObject(SomeInterface)
. - nowa dyrektywa
delayed
wskazuje, że zewnętrzna biblioteka, taka jak DLL, nie ma być ładowana w czasie deklaracji, ale ma czekać na pierwsze wywołanie metody - Konstruktor Klasy / Destruktor
- Typ wewnętrzny
string
teraz mapuje doUnicodeString
; -
{$HighCharUnicode on|off}
dyrektywa kompilatora - Generyki ;
-
function Default(T): T
funkcja wewnętrzna (nieudokumentowana) - Inteligentne Wskaźniki ;
- metody anonimowe ;
- Obsługa zagnieżdżonych wyjątków i śledzenie WYJĄTKÓW ;
- wsparcie dla pointermath i nowej dyrektywy kompilatora:
{$PointerMath on|off}
; - cztery nowe ostrzeżenia kompilatora:
-
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'
;
-
- funkcja
Exit
może przyjmować parametr określający wynik; -
resourcestrings
jako Widestrings; -
TObject
posiada dodatkowy Ukryty wskaźnik doTMonitor
ponadto wskaźnik VMT; - słowo kluczowe
deprecated
może teraz mieć dodatkowy tekst
- żadnych zmian językowych, o których wiem;
zauważ, że Delphi 2007 jest niełamliwym wydaniem, DCU z D2006 będzie działać bez zmian w D2007 ; - ("osobowość". NET z 2007 roku wprowadziła generyki)
- Enhanced records ;
- operator przeciążenia ;
-
static
metody i właściwości; - pomocnicy klasy ; FastMM jest domyślnym menedżerem pamięci;
-
strict
private/protected visibility keyword ; -
final
słowo kluczowe dla metod wirtualnych; -
{$METHODINFO}
dyrektywa;
-
for ... in
pętle, -
inline
słowo kluczowe - Wildcard w poleceniu uses dozwolone
- typy zagnieżdżone
- zagnieżdżone stałe
-
{$REGION}
/{$ENDREGION}
dyrektywy
- trzy dodatkowe ostrzeżenia kompilatora:
- Unsafe_Type,
- Unsafe_Code i
- Unsafe_Cast. te ostrzeżenia są domyślnie wyłączone, ale mogą być włączone
- nowa dyrektywa kompilatora
{$WARN UNSAFE_CODE ON}
- przeciążenia procedur, które Formatuj i analizuj liczby, wartości daty i czasu oraz walutę za pomocą struktury
TFormatSettings
.
-
[TCustomVariantType][68]
zapewnia przeciążenie operatora dla niestandardowych typów wariantowych - nowe dyrektywy kompilatora:
{$IFDEF MSWINDOWS}
-
{$IFDEF LINUX}
{$LIBPREFIX}
{$LIBSUFFIX}
{$LIBVERSION}
-
{$MESSAGE 'message'}
-
{$SetPEFlags}
- wsparcie dla
{$IF}{$ELSE}
dyrektyw kompilatora -
dyrektywy kompilatora:
experimental
,deprecated
,library
,platform
(ale bez dodatkowego tekstu dla deprecated)
Wariant nie jest już oparty na COM, ale zmieniony na Kompatybilny z CLX, wariant oparty na COM przemianowany na -
wpisane stałe nie mogą być przypisane do (Override with
{$J+}
) - typom wyliczonym można przypisać jawne value (cf C++);
- Właściwości interfejsu W 2007 roku firma została założona przez firmę Microsoft, która od 2007 roku zajmuje się dystrybucją i dystrybucją sprzętu komputerowego.]}
- warianty niestandardowe
OLEVariant
Brak nowych funkcji językowych, ale:
- tablice dynamiczne
-
LongWord
iInt64
;Cardinal
jest UINT32 (zanim została niepodpisana 31-bitowa wartość) -
Real
zajmuje 8 bajtów i jest taki sam jakdouble
(wcześniej było to 6 bajtów);- Override with the new
{$REALCOMPATIBILITY ON}
compiler directive; -
REAL48
zastępuje stary 6-bajtreal
;
- Override with the new
- wsparcie dla
resourcestrings
- metoda przeciążenia
- domyślne parametry
-
{$EXTERNALSYM}
i{$NODEFINE}
dyrektywy -
implements
słowo kluczowe dla właściwości
- Wordbool, longbool i bytebool przechowują
- komponenty muszą być instalowane za pomocą
packages
. - twierdzenia.
-
out
parametry. -
Widestring
-
interface
idispinterface
keyword i COM (dispid
) wsparcie.
false
jako -1
zamiast 1 (Boolean jest bez zmian)
- wsparcie dla 32-bitowych;
-
Ansistring
zastępujeshortstring
jako domyślny typ string -
Currency
-
Variant
(dla interop z OLE automation). - wsparcie dla gwintowania i
ThreadVar
słowo kluczowe.
Dane z 4 bajtów są wyrównane do 4 bajtów nowe - TDateTime zaczyna się na
1899/12/30
pod D1 zaczęło się w0000/00/00
- nowy
finalization
słowo kluczowe -
register
istdcall
dodano konwencje wywołujące. -
packed
słowo kluczowe.
packed
słowo kluczowe nadpisuje to zachowanie;
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-10-13 17:00:29
Tylko dla uzupełnienia odpowiedzi Johan Sprawdź ten wpis na moim blogu List of changes between versions of Delphi (Since Delphi 5)
i doskonała Strona The TIndex
która wymienia większość nowych funkcji od delphi 2005 i zasoby o każdej z nich.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:26:20
Jedi.plik inc używany przez projekt Dephi JEDI eksponuje szereg definicji funkcji. Jeśli twój projekt jest kompatybilny z MPL, możesz nawet użyć go do wykrywania funkcji i zaoszczędzić sobie kłopotów z wymyśleniem tego konkretnego koła.
Na przykład definiuje SUPPORTS_FOR_IN
jeśli kompilator obsługuje enumeratory. Można by zawinąć kod enumeratora w IFDEF
sprawdzanie tego definiowania zamiast sprawdzania konkretnej wersji kompilatora.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-12-12 15:06:45