Ještě pár informací o XE2

vložil Radek Červinka 27. září 2011 21:59

Napadlo mne ještě pár drobností o XE2, co by se někomu mohlo hodit.

System.UITypes

Nejsem si jist zda jsem to již psal, ale je nová jednotka System.UITypes, která obsahuje deklarace různých typů z UI, dříve v různých jednotkách a v původních jednotkách je nyní jen alias.

třeba Vcl.Forms:


const
  caNone        = System.UITypes.TCloseAction.caNone;
  caHide        = System.UITypes.TCloseAction.caHide;
  caFree        = System.UITypes.TCloseAction.caFree;
  caMinimize    = System.UITypes.TCloseAction.caMinimize;
  
{ TScrollingWinControl }
  wsNormal	    = System.UITypes.TWindowState.wsNormal;
  wsMinimized	= System.UITypes.TWindowState.wsMinimized;
  wsMaximized	= System.UITypes.TWindowState.wsMaximized;  
  
  biSystemMenu	= System.UITypes.TBorderIcon.biSystemMenu;
  biMinimize	= System.UITypes.TBorderIcon.biMinimize;
  biMaximize	= System.UITypes.TBorderIcon.biMaximize;
  biHelp	    = System.UITypes.TBorderIcon.biHelp;

TThread.TerminatedSet

V třídě TThread přibyla kromě jiného virtuální metoda TerminatedSet. Nyní je implementace Terminate následující

procedure TThread.Terminate;
begin
  if FExternalThread then
    raise EThread.CreateRes(@SThreadExternalTerminate);
  FTerminated := True;
  TerminatedSet;
end;

tj. lze jednodušeji reagovat na ukončení vlákna.

Něco o 64bit

Pokud uvažujete o 64bit verzi programu tak Vám kompilátor při překladu může zahlásit pár problémů tohoto typu:

// dříve
Edit1.Tag := Integer (Label1);
// správně
Edit1.Tag := NativeInt (Label1);

// dříve
PostMessage (Handle, WM_APP, 0, Integer (Button2));
// správně
PostMessage (Handle, WM_APP, 0, LParam (Button2));

nebo
SendMessage(FEdit.Handle, EM_SETRECTNP, 0, Integer(@R));
SendMessage(FEdit.Handle, EM_SETRECTNP, 0, LPARAM(@R));

Tag je nyní NativeInt - velikost v závislosti na platformě, a hodně API mají nyní typově striktní deklaraci, která je korektní napříč platformami. Ale nebojte se - on se kompilátor ozve.

Obj a 64bit

Jelikož je v části RTL použito OBJ (např. v zlib), zajímalo mne jak to bude na 64bit verzi RTL (jelikož 64bit verze C++Builderu neexistuje). Podle některých náznaků tak nyní Delphi kompilátor (resp. linker) umí linkovat COFF soubory (tj. OBJ z VC++).

System.Types

Pozor: nově jsou záznamy TRect, TPoint, TSize a nové (float varianty) TPointF, TSizeF, TRectF z jednotky System.Types rozšířeny o metody, což hlavně v případě TRect může v kombinaci s with způsobit problém.

Jedná se o to, že nově má TRect mimo jiné property Height a Width, tj. pokud máte kód jako

procedure TForm1.Draw;
…
begin
  with Rect do
  begin
    x := Width + 10;
    
  end;
end;

tj. předtím Width byla property formuláře, nyní je Width property TRect. Takže bacha na Rect v kombinaci s with!


Nabízíme Delphi školení a konzultace na různá témata, primárně ve Vaší firmě.

Tagy: ,

Novinky v Delphi

Komentáře

28.9.2011 10:17:50 #

tz

A ještě jedna novinka: vyšel Update Pack 1 pro XE2:

http://docwiki.embarcadero.com/RADStudio/en/Release_Notes_for_XE2#Please_Install_XE2_Update_1

Je trochu jiný než jsme zvyklý u dřívějších Update Packů - Delphi odinstaluje a nainstaluje znovu.

tz

5.10.2011 10:00:00 #

JaroB

Po dlouhém zkoumání jsem zjistil, že verze ZLib 1.2.5  v XE2 je kapku jiná než v XE 1.2.3 a nefunguje správně (ani pomocí tydýtích kejklí s PByte aritmetikou). Interface na kompresi bufferu je "skoro" stejný jako v XE, ale je to nějak rozbitý. Nebo to dělám úplně blbě...

JaroB

Komentování ukončeno

Naše nabídka

Partial English version.

MVP
Ing. Radek Červinka - Embarcadero MVP
profil na linkedin, Twitter:@delphicz

Nabízím placené poradenství a konzultace v oblasti programování a vývoje SW.
Dále nabízíme i vývoj speciálního software na zakázku.

Neváhejte nás kontaktovat (i ohledně reklamy nebo burzy práce).

Pokud chcete podpořit tento server libovolnou částkou, můžete použít PayPal. Moc děkuji.

Delphi Certified Developer

O Delphi.cz

Delphi je jediný moderní RAD nástroj podporující tvorbu nativních aplikací pro platformu Win32, Win64 , Mac OSX a na iPhone a Android (s výhledem na další platformy díky FireMonkey) na současném trhu (včetně Windows 8.1).

V současnosti je světová komunita přes dva miliónů vývojářů.

Delphi.cz je nezávislý portál pro uživatele Delphi. Portál není koncipován pro úplné začátečníky, i když i ti se zde nebudou nudit, ale spíše na programátory, kteří již něco znají a chtějí své znalosti dále rozvíjet a sledovat novinky.

Anketa

Poslední komentáře

Comment RSS