Delphi 12 je dostupné.
Tato verze přináší mnoho novinek, ať už se jedná o změny v IDE, instalaci, RTL nebo knihovnách či samotném jazyku. Seznam úprav a vylepšení (jen veřejné) je impozantní.
Už samotná instalace je přepracovaná, uživatel má snad skoro všechno na jedné obrazovce. Zde jen upozorním na položku Modeling. IDE postupně nahrazuje některé méně použivané části jako separátní část, jako např. modeling. Ale pokud chcete používat refaktoring, je tato část momentálně nutná.
Kromě přepracovaného vyhledávání, bych např. rád uvedl snížení používání GDI resources, kdy pokud nějaké Images nejsou používány určitou dobu, jsou označeny jako Dormant a šetří prostředky. Metoda je dostupná ve VCL, ale není ve vašich programech automaticky volána.
LSP nyní podporuje "Auto invoke" code completion, jeho chování je možné nastavit v Options > Editor > Language > Delphi > Code Insight , hlavně pozor na to aby bylo vybráno Delphi. Zároveň doplňování kódu bylo rozšířeno o klíčová slova (např. begin).
Prakticky kdekoliv, kde IDE vypisuje nějaký text typu programovacího jazyka (třeba Call Stack, doplňování, error messages, structure view) bylo přidáno zvýraznění kódu. Takových drobných změn je celkem dost.
Dále lepší podpora IDE při práci na vzdálené ploše.
Kromě úpravy chování když debugger čeká na program (wait tlačítko) jsou hlavní změny u ostatních platforem
Integrace Skia (základem je System.Skia.pas) pro Firemonkey a podpora VCL, vše na bázi Skia4Delphi, ale s rozšířeními, které nejsou Open source, jako např. Vulkan. Skia4Delphi je multiplatformní 2D grafické API pro Delphi a C++Builder založené na grafické knihovně Skia společnosti Google. Poskytuje komplexní 2D API pro vykreslování obrázků v mobilních, serverových a desktopových modelech. Je kompatibilní se všemi frameworky RAD Studia (Console, FMX a VCL) a platformami. Firemonkey se Skia je mnohem rychlejší.
Poskytuje běžné 2D API tím, že abstrahuje složitosti při implementaci nízkoúrovňových knihoven jako jsou OpenGL, Vulkan, DirectX nebo Metal, implementuje optimalizace a nové funkce.
Zároveň přidává nové ovládací prvky i do VCL: TSkAnimatedImage, TSkLabel (vlastnosti, které normální TLabel neumí), TSkPaintBox & TSkAnimatedPaintBox a konečně TSkSVG. Komplexní popis Skia4Delphi.
Po x letech přichází změna, o kterou žádalo strašně moc programátorů. Resp. jedná se o dvě změny: delší a víceřádkové textové konstanty (string literals). Z historických důvodů bylo textové konstanty limitovány na 255 znaků (tj. velikost původních pascal řetězců) a při kompilaci to zahlasilo chybu
E2056 String literals may have at most 255 elements
.
To nyní částečně odpadá, protože se naráží na limit editoru, který je cca 4000 znaků na řádek, ale s tím se dá žít, i protože:
Do jazyka byla přidána podpora pro multiline (víceřádkové) řetězce. Bože, jak dlouho jsem po tomto toužil, hlavně při psaní SQL, JSON, XML v kódu a podobných akcích. Multiline string začína trojitým apostrofem ''' a novým řádkem. Od dalšího řádku začíná vlastní řetězec, který pokračuje přes další řádky až do uzavíracích trojitých apostrofů na řádku, kde před nimi není žádný text.
Pozor: odsazení uzavíracích apostrofů určuje odsazení celého textu.
Tady máme odsazení dva znaky viz. vodící čáry.
NativeInt není chápán jako zvláštní typ, a není rozlišován při volání s overload.
Kompilátor vygeneruje seznam co závisí na čem, tj. který pas závisí na kterém pas souboru. Jedná se o flag --graphviz . Výsledek se dá předhodit std. programům.
dcc32 --graphviz --graphviz-exclude=System.*;Vcl.*;WinApi.* GraphTest.dpr
To není jen tak pro nic za nic. Cílem bylo také informovat o kruhových referencích, kdy dříve kompilátor vyplivnul hlášku o kruhové referenci, ale teď by byl výsledek něco jako
[dcc32 Fatal Error] GT_mainform.pas(7): F2047 Circular unit reference to 'GT_MainForm'
GT_dialog.pas(7): Unit 'GT_datamodule' is used by 'GT_dialog'
GT_mainform.pas(7): Unit 'GT_dialog' is used by 'GT_mainform'
GT_datamodule.pas(6): Unit 'GT_MainForm' is used by
'GT_datamodule'
Kompilátor umí optimalizovat dělení konstantou.
Přidány funkce GetCompilerVersion a GetRTLVersion.
Pozor: zásadní změna, která byla taky už asi třeba dávno. Změněna výchozí hodnoty chování vyjímek při práci s reálnými čísly. Z historických důvodů a má to logiku i dnes, jsou chyby při práci s reálnými čísly propagovány jako vyjimky. Ale většina knihoven mimo Delphi (např. myslím OpenGL) vyjímky maskuje a ignoruje. Takže taková DLL pak nečeká, že může dojít k vyjímce a co se stane je nejasné. Takže od D12 se Delphi přizpůsobilo, i když většinou to stejně máte podchyceno už z dřívějška. Vy můžete obnovit původní chování. Mimochodem jsem o podobném problému psal v souvislosti s přesností a Ranorex. Jinak podrobně o změně docwiki.embarcadero.com/RADStudio/Athens/e/index.php/Floating_Point_Operation_Exception_Masks.
Další změny v RTL jsou popsány ve What's new, za mne ještě rozšíření TZip o IZipCryptor, které umožňuje přidat šifrování (myslím, že už nějaká implementace existuje). Nesmím opomenout ani TControl Enumerator, včetně filtrování.
for var ACtrl in Panel1.GetControls([ceftEnabled]) do
begin
// vrátí prvky, které jsou enabled na Panel1
end;
JSON Data binding wizard vytváří datové typy podle JSON, je dostupný přes New > New Items > Delphi > Web . Dále mne zaujalo, že RAD server nyní používá FastMM5, ale v Delphi je pořád předchozí verze. Důvodem je prý zlepšení v multithread aplikacích (prý cca 5%), což potvrzuje co jsem zkoušel sám.
Hodně změn a vylepšení i v Rest client, případně THttpClient.
Kromě změn i nadále FireDac podporuje dvě verze SQLite 3.31.1 (s FireDAC encryption - FDE), a aktuální 3.42, která nepodporuje rozšíření, které používá FireDac pro šifrování. Query-by-Example (QBE) je nyní i ve FireDAC.
MDI podpora pro HighDPI a styly. MS technologii MDI zakonzervoval a neaktualizuje, ale podle vyjádření EMBT hodně zákazníků vyžadovalo vylepšit podporu. Takže Delphi 12 v této oblasti hodně zapracovalo, a ne jen ohledně MDI, ale je to mimo rozsah přehledu, přesto naznačím existenci TCustomForm.VisialManager, případně TFormTabsBar.
Podpora pro VCL Styly přímo v Design módu.
Přepracovaná podpora TFont a škálování, metody typu TFont.ChangeScale a TFont.ScaleForDPI.
Android Target API Level 33, jak požaduje google pro store, včetně souvisejících aktualizací jako permission atd. S každou verzí Androidu si říkám, že to Google dělá schválně a slovo kompatibilita …
Přidána podpora pro Split screen FMX aplikace, tj. že mobilní aplikace používá jen část plochy. Z tuny dalších vylepšení jen TMemo podporuje IME Text vstup, stejně jako nativní edit, což jsem nezkoušel, ale mělo by to být obecně.
Je nástroj, který vám vygeneruje ikonu podle vašich požadavků a pro danou platformu ji dodá v patřičných rozměrech. Na ukázce windows, ale primárně jde o mobilní platformy.
Je to jen pár poznámek z toho co jsem zkoušel nebo co mne zaujalo. A pokud vám to něco přineslo, budu rád za hodnocení.
Pozn.: zásadní změny se odehrávají u C++, kdy po letech se výrazně updatuje kompilátor a přidává se integrovaný Visual Assist, což je podle některých lidí legendární nástroj z VS univerza pro navigaci, refaktoring atd. od firmy Whole tomato, kterou EMBT koupilo. Doufám, že někdy budou i podporovat Delphi.
Datum: 2023-11-07 19:54:00 Tagy: Delphi 12