vložil Radek Červinka
6. června 2017 00:17
Předpokládám, že ne všichni sledují všechny nové soubory v instalaci Delphi a tak bych rád upozornil na dvě jednotky z posledních verzí:
System.Hash a System.NetEncoding a chtělo by se říct konečně.
Více...
vložil Radek Červinka
31. ledna 2017 00:03
Podle mne ne moc známá věc je implementace BCD v Delphi. BCD je způsob uložení čísel s fixní přesností. BCD je v Delphi reprezentován záznamem TBCD definovaným v jednotce Data.FmtBCD, případně FMTBcd (ve starších verzích, nejméně D2007).
Více...
edfc8145-df38-4658-a10f-31e32591ec16|7|5.0
Tagy: RTL
Praxe
vložil Radek Červinka
26. listopadu 2016 23:37
Myslím, že normální programátor používající DLL v Delphi obecně chápe, že předávat string jako parametr do DLL není možné bez použití berličky typu SimpleShareMem, která propojí memory manager v hlavní aplikaci s memory managerem v DLL. Což ovšem znemožňuje použití DLL z jiných jazyků a proto se musíme snížit na úroveň předávání přes PChar nebo PWideChar.
Více...
vložil Radek Červinka
4. července 2015 01:26
V rámci prověřování jednoho nápadu jsem chtěl vyzkoušel jak se chová TThread.Queue a TThread.Synchronize (více o těchto volání z dřívějška) u ne GUI aplikací (resp. zkoušel jsem jen konzolové).
Více...
vložil Radek Červinka
21. května 2015 23:53
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íce...
vložil Radek Červinka
19. dubna 2015 23:59
No minule jsem byl k THTTPClient trošku nespravedlivý, ve skutečnosti toho umí více než se zdálo. Kromě https bez nutnosti dodání OpenSSL pro různé platformy to má zajímavé možnosti ohledně paralelního zpracování. Ukáži na malém příkladu.
Ukáži nejprve příklad na zamyšlení a pak vysvětlím co to vlastně dělá.
Více...
vložil Radek Červinka
17. listopadu 2014 21:58
Nedávno jsem přišel na chybu (resp. nedokonalost) ve verzích kolem XE (jak zpátky nevím, ale opraveno kolem XE3 nebo XE4). Jedná se o problém při ukončování aplikace, kdy aplikace zůstane viset při uvolňování věcí ohledně TMonitor. Později jsem zjistil, že nejsem sám - aplikace zůstane viset pokud nejsou korektně uvolněny instance používající (myslím) TMonitor (např. ThreadList ale i jiné).
Pikantní je, že chyba se vyskytovala jen sem tam - problém vznikl (asi) při přidání mnoha nových komponent pro UI a nemám sílu a energii to nějak systémově řešit (jako např. navrhuje Uwe Raabe za pomocí trasování - DoneMonitor. Popis problému je několikrát popsán.
Chyba (možná spíše přílišný optimismus při implementaci) za normální situace nenastane.
Více...
vložil Radek Červinka
10. září 2014 00:39
XE7 přichází s novou jednotkou přímo v RTL a to System.Threading, která zjednodušuje paralelní programování. Jedná se o multiplatformní věc a mezi jinými umí ThreadPool, který podle zátěže přidává nebo odebírá další vlákna.
Více...
vložil Radek Červinka
20. srpna 2014 00:51
Od XE6 je součástí RTL Delphi podpora pro JSON. V předchozích verzích to byla součástí DataSnap, ale od XE6 je nově součástí přímo RTL v jednotce System.JSON.
Více...
vložil Radek Červinka
21. července 2014 23:32
Před několika verzemi byla metoda TThread.Synchronize rozšířena o několik možností volání, mezi jinými i anonymní metody. Nepřikládal jsem tomu moc význam, ale poslední dobou jsem to viděl v několika projektech a nabývám dojmu, že to má větší možnosti než jsem si myslel.
Více...
vložil Radek Červinka
11. července 2014 22:28
Laskavý čtenář mého blogu jistě už naznal, že Delphi neznamená jen Win32 (Win64, OSX) ale i kompilátory pro iOS a Android.
Tyto kompilátory (kromě kompilace do ARM) přinášejí i podporu ARC (Automatic Reference
Counting) pro objekty (podobně jako k tomu došlo před nedávnem Apple). Princip není v Delphi v podstatě nový - Delphi odjakživa používají stejný mechanismus nejméně pro řetězce a interface.
V podstatě existují dvě možnosti automatického uvolňování paměti - ARC a Garbage Collector, kdy GC je ten nedeterministický (tj. problematický viz Android a nový runtime ART to taky řeší), ale to sem asi nepatří.
Obecně ale oba modely musí řešit cyklické reference. Takže ARC je moc pěkné, ale není vše tak sluníčkové jak by mohlo vypadat. V nejhorším ale jen nedojde k uvolnění, pokud se tomu chceme vyhnout, je nutno jít trochu hlouběji. Upozorňuji, že právě následující text jde v některých detailech hlouběji než je nutné pro normálního programátora.
Více...
vložil Radek Červinka
29. května 2014 22:36
V XE byla výrazně rozšířena jednotka DateUtils přidáním podpory pro TTimeZone, doporučuji Vaší pozornosti, zvláště instanci TTimeZone.Local. Pokud potřebujete pracovat
s časovými zónami tak tato třída Vám velmi ulehčí práci.
Více...
25ed6234-880b-4633-8e2f-a0ec498562f6|5|5.0
Tagy: RTL
Novinky
vložil Radek Červinka
23. dubna 2013 23:10
Firemonkey byla výrazně rozšířena. Trial verze je nově dostupná i jako Instant Trial, tj. via AppWave.
Pro zajímavost nově TOSVersion obsahuje nové platformy.
TOSVersion = record
public type
TArchitecture = (arIntelX86, arIntelX64, arARM32);
TPlatform = (pfWindows, pfMacOS, pfiOS, pfAndroid, pfWinRT, pfLinux);
public const
AllArchitectures = [arIntelX86, arIntelX64, arARM32];
AllPlatforms = [pfWindows, pfMacOS, pfiOS, pfAndroid, pfWinRT, pfLinux];
Hmm, pfWinRT?
Více...
vložil Radek Červinka
4. dubna 2013 01:39
Myslím, že celkem nedoceněnou vlastností je přetěžovaní operátorů u datové struktury record. Z cvičných důvodů ukáži jak např. emulovat 8bit string za pomocí TBytes.
Více...
vložil Radek Červinka
7. listopadu 2012 01:17
Kreténi. Tak jedině mohu nazvat autory OS X. Vysvětlím proč. Minule jsem popisoval jak staticky linkovat knihovny na OSX. V podstatě si musíte dát jen pozor, aby se při importu u symbolů přidalo podtržítko. Tj. pokud se exportovaná funkce jmenuje Foo, při importu musíte specifikovat název
_Foo
Ok, prostě taková úchylka, člověk se s tím smíří.
Více...