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.
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
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.
A není to žádné ořezávátko - TBCEditor (Delphi XE4-XE8), backport pro XE - tbceditorxe.
Mezi zajímavé vlastnosti patří:
Jedná se o zajímavou variantu pro SynEdit a zejména code folding - hmm.
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í.
Dema pro použití jsou v C:\Users\Public\Documents\Embarcadero\Studio\16.0\Samples\Object Pascal\Mobile Samples\Physics.
Datum: 2015-05-21 22:53:00 Tagy: komponenty, kompilátor, RTL, Firemonkey, XE8, hry, grafika, hardware, IoT