Dneska se bude řešit System.Copy, epesní nová komponenta na editaci textu, herní engine pro FireMonkey, změna podmínek aktualizace pro XE8 a nějaké odkazy.
Případ System.Copy
Všichni známe Copy, ne? Pokud ne, tak je Copy je kompilátorem generovaná funkce, která kopíruje od pozice X, Y prvků. Píši prvků a ne znaků, protože Copy funguje i na prvky dynamického pole.
function Copy(S: <string or dynamic array>; Index: Integer; Count: Integer): string;
Pár zajímavostí: pokud je Count > zbytek od Indexu do konce, je počet ošetřen a vrácen jen zbývající počet prvků. Dříve jsem jako trubka pokaždé dopočítával zbytek (a sem tam jsem se sekl o 1), později jsem se na to vykašlal a dával jako parametr Length řetězce. Jedná se o deklarované chování, ušetřím si problémy se špatnou délkou.
Později jsem si v helpu přečetl, že pokud se jedná o dynamické pole, mohou se dva parametry vypustit. Přišel jsem na to, že v případě řetězce se dá vypustit poslední parametr a kompilátor tam doplní MaxInt.
Project7.dpr.14: writeln(Copy(s, 3));
0041C4C5 8D45EC lea eax,[ebp-$14]
0041C4C8 50 push eax
0041C4C9 B9FFFFFF7F mov ecx,$7fffffff <--------------
0041C4CE BA03000000 mov edx,$00000003
0041C4D3 A1BC3E4200 mov eax,[$00423ebc]
0041C4D8 E8DBADFEFF call @UStrCopy
0041C4DD 8B55EC mov edx,[ebp-$14]
0041C4E0 A18CE64100 mov eax,[$0041e68c]
0041C4E5 E8EA87FEFF call @Write0UString
0041C4EA E8E588FEFF call @WriteLn
0041C4EF E8907CFEFF call @_IOTest
Změna podmínek aktualizací u XE8
U uvedení XE8 jsem smutně napsal, že podle nových podmínek nemá uživatel nárok na opravy pokud nemá předplatné (subscription). Naštěstí EMBT pochopilo, že to není optimální a aktualizovalo podmínky embarcadero.com/products/rad-studio/update-subscription. Ve zkratce: kritické opravy a další podobné případy budou dostupné všem.
Nová opensource komponenta pro editaci textu
A není to žádné ořezávátko - TBCEditor (Delphi XE4-XE8), backport pro XE - tbceditorxe.
Mezi zajímavé vlastnosti patří:
- code folding
- vnořené pravidla pro zvýrazňování (JS v HTML)
- atd.
Jedná se o zajímavou variantu pro SynEdit a zejména code folding - hmm.
Odkazy
Beacons
EMBT.CZ začalo nabízet Beacons - HW "majáčky", které jsou na západě hrozně v kurzu a samozřejmě mají podporu v XE8. Na uvedeném odkazu je o tom povídání ohledně různých odvětví.
Box2D součástí XE8
Dema pro použití jsou v C:\Users\Public\Documents\Embarcadero\Studio\16.0\Samples\Object Pascal\Mobile Samples\Physics.