Delphi.cz

Český portál Delphi

Delphi 12 Athens dostupné

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í.

Delphi 12

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á.

Delphi 12

IDE

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).

Auto invoke

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.

Debugger

Kromě úpravy chování když debugger čeká na program (wait tlačítko) jsou hlavní změny u ostatních platforem

  • Ladění v simulátoru iOS pro iOS 17 je funkční, ale ladění v zařízení s iOS 17 není podporováno. Důvodem je změna systému iOS, která se týká více výrobců jiných než Apple.
  • Pro spouštění aplikací je podporován Xcode 15.
  • Aktualizována LLDB pro macOS.
  • Aktualizována LLDB pro Linux.
  • Zprávy PAServeru, včetně nápověd, se budou zobrazovat v panelu Zprávy IDE.
  • V okně Threads se zobrazuje handle vláken operačního systému.
  • Bylo vylepšeno zobrazování registrů FPU na počítačích Intel Mac.
  • Při ladění kódu Delphi používajícího anonymní metody se zobrazují zachycené proměnné.
  • Nápověda debuggeru v editoru se nyní škáluje podle velikosti písma a má zvýraznění syntaxe.
  • Registry FPU a XMM se správně zobrazují v 64bitových systémech Windows s LLDB, MacOS a Linux.
  • Registry ST a XMM se správně načítají pro obě platformy Win64 C++.
  • Modifikace registrů FPU a ST.XMM v systémech Linux a macOS.

Skia Integrace

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.

skia Delphi

Změny v kompilátoru Delphi

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.

indent

Tady máme odsazení dva znaky viz. vodící čáry.

NativeInt jako Weak Alias

NativeInt není chápán jako zvláštní typ, a není rozlišován při volání s overload.

Kompilátor může emitovat Graph jako GraphViz soubor

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'

Optimalizace dělení konstantou

Kompilátor umí optimalizovat dělení konstantou.

Optimalizace dělení konstantou

Optimalizace dělení konstantou

RTL

Přidány funkce GetCompilerVersion a GetRTLVersion.

Disabling Floating-Point Exceptions

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;

Data a internet

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.

Firedac

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.

VCL

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.

Fonts

Přepracovaná podpora TFont a škálování, metody typu TFont.ChangeScale a TFont.ScaleForDPI.

FireMonkey

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ě.

Single App Icon Wizard

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.

Single App Icon Wizard

Single App Icon Wizard

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

Novinky v Delphi