Rozcestník: Jste tu poprvé?
Pro začátečníky jsem napsal úvod do programování v Delphi.
Můžete si přečíst informace ohledně změn v jednotlivých verzích Delphi a
případně mezi jednotlivými edicemi Delphi.
Pokud přecházíte ze starších verzí tak řetezce a unicode.
Možná Vás bude zajímat spolupráce databáze a Delphi,
nebo se budete rozhodovat mezi různými druhy Delphi projektů.
Navštivte adresář nejpopulárnějších open source Delphi komponent
Platform status - podporované platformy v jednotlivých verzích
Free Delphi Starter Edition download
Potřebujete Delphi školení nebo konzultace na různá témata?
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ě.
Datum: 2017-06-05 23:17:00 Tagy: RTL
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).
Datum: 2017-01-30 23:03:00 Tagy: RTL
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 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é).
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.
Datum: 2015-05-21 22:53:00 Tagy: komponenty, kompilátor, RTL, Firemonkey, XE8, hry, grafika, hardware, IoT
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...
Datum: 2015-04-19 22:59:00 Tagy: XE8, Indy, synapse, RTL, paralel
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.
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.
Datum: 2014-09-09 23:39:00 Tagy: XE7, RTL, Threading, paralel,
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.
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.
Datum: 2014-07-21 22:32:00 Tagy: RTL, delphi, anonymni metody
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.
Datum: 2014-07-11 21:28:00 Tagy: ARC, ARM, kompilátor, praxe, super, RTL
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.
Datum: 2014-05-29 21:36:00 Tagy: RTL
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?
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.
Datum: 2013-04-04 00:39:00 Tagy: kompilátor, RTL
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...
Ve zkratce několik novinek a poznámek.
Datum: 2012-11-01 22:34:00 Tagy: RTL, XE3, aktualizace, unigui, ARC, FireMonkey, Styly
Přišel mi mail od čtenáře Jiří Milička a zkusím ho zde publikovat - třeba to někomu pomůže.
Ve zkratce tvrdí, že přišel na dvě chyby s TStringList: Více...
Dnes to bude o Delphi 1, nějaký Open Source pro syntézu řeči, kousek kódu z RTL, device drivers a Delphi nebo FPC, TMethod, GDI+ a vyhlazování a seminář bude nakonec v Olomouci atd.
Datum: 2012-02-01 22:10:00 Tagy: delphi, RTL, RTTI, komponenty, grafika
Pod článkem s anketou ohledně nejvyšší používané verze jsou i dva komentáře stěžující si na problémy s XE2. Leoš si stěžoval na design mód a stabilitu ohledně IBX komponent a JaroB na problémy s portací TinyDB z XE do XE2. Bohužel Leoše v tom asi musím nechat, jelikož IBX komponenty a já se nemáme rádi, ale ohledně TinyDB jsem si řekl, že bych to mohl zkusit.
Výsledkem byl zajímavý možný problém ohledně TStream.
Dnes tu bude pár poznámek ohledně unigui, FireMonkey, nějaký kousek kódu a další efektové. V zahraničí se všichni bohužel hádají ohledně FreeAndNil (čemuž se chci vyhnout), takže zde nic takového nečekejte.
Datum: 2012-01-17 21:04:00 Tagy: unigui, vykriky, FireMonkey, utrzky, IDE, RTL
Napadlo mne ještě pár drobností o XE2, co by se někomu mohlo hodit. Více...
Na FireMonkey se mi líbí x věcí a jedna z nich je portabilita. Nyní se objevila nová "platforma", resp. implementace Canvas pro Windows (kromě standardních GDI+ a Direct2D) tak přibyla FMX.Canvas.VPR. Jedná se o malou knihovnu, jejíž autorem je Mattias Andersson ze serveru graphics32.org a projektu VPR, což je polygon rasterizer.
Datum: 2011-09-13 22:39:00 Tagy: FireMonkey, DelphiXE2, optimalizace, RTL
Jelikož je XE2 multiplatformní je vhodné mít nástroj na kontrolu platforem, potažmo verze.
Jednotka System.SysUtils byla rozšířena o záznam TOSVersion.
Několik dalších informací o tom co nás čeká. Podrobné informace (určitě včetně benchmarku x64bit) budou po RTM verzi, do té doby jen útržky z toho co je povoleno publikovat. Více...
Datum: 2011-08-11 00:16:00 Tagy: DelphiXE2, FireMonkey, RTL, iOS, FPC
Pořád mi to přijde, že píšu a píšu a žádné výsledky (teda kromě návštěvnosti, která je slušná). Takže jelikož je období zkoušek, je zde malý testík. Ušetřím Vás trapností typu jakými třemi způsoby se dá označit komentář, na druhou stranu pro dnešek vynecháme i generika a další věci.
V budoucnosti přejdeme k XE2, kde určitě bude hafo témat, ale to bude ještě cca 2-3 měsíce trvat a do té doby máme ještě trochu času. Takže na zabití času malý test.
Co bod - to bod. V úvahu jsem bral Delphi XE, ale většina věcí je platná obecně. A prosím bez google a spol., kdo najde chybu vyhrává. Více...
Datum: 2011-05-27 01:48:00 Tagy: RTL, kompilátor
Resp. spíše několik zajímavých odkazů, třeba se někomu bude něco hodit.
Datum: 2011-05-24 22:38:00 Tagy: komponenty, praxe, optimalizace, RTL
I pokud je člověk začátečníkem, v Delphi narazí na objekty a třídy v podstatě hned - např. i formulář je objekt.
Jen pro úplnost: objekt je instancí třídy, ale to modří již vědí. Vytvoření objektu je provedeno voláním konstruktoru patřičné třídy. Následně objekt existuje v paměti dokud programátor neuzná za vhodné ho uvolnit (zjednodušeně).
Datum: 2011-05-13 20:39:00 Tagy: delphi, RTL, Object Pascal, FastMM
Díky komentáři Jaroslava Beneše minule pod článkem (určitě se podívejte na jeho stránky s Delphi drobnostmi - např. TinyDB) jsem se zahloubal do stránek delphibasics.info což jsou opravdu hardcore Delphi programátorské stránky, kde jsem se inspiroval. Více...
Delphi od nějaké verze 3 podporují balíčky (packages). Jedná se o speciální DLL, které podporují speciální vlastnosti Delphi a jejich RTL (tj. zachování objektového modelu, sdílení správce paměti, bezproblémové operace s řetězci a dynamickými poli atd.). Použití balíčků umožňuje velkou modularitu. Více...
Datum: 2011-05-06 22:23:00 Tagy: začátečníci, delphi, dll, RTL, super,
Opět je tu několik navzájem nesouvisejících výkřiků, které jsou delší než limit twitteru a kratší než článek.
Dnes o tom jak použít RichEdit 4.1, nějaký nástroj, nějaká free komponenta, trochu cool grafiky se zdrojovým kódem, tip pro 64bit kompatibilitu.
Datum: 2011-04-29 21:00:00 Tagy: komponenty, delphi64, nastroje, open source, grafika, RTL