Delphi.cz

Český portál Delphi

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řípad FieldByName

Jak se tak potuluji po zákaznících se školením nebo konzultacemi, tak narážím na opakovanou situaci s FieldByName (případně podobnými funkcemi).

Více...

Datum: 2018-03-05 23:36:00 Tagy: db, ladeni, optimalizace

Optimalizace Praxe

Spider - nový Delphi free profiler

Když jsem potřeboval profilovat tak jsem většinou používal Sampling profiler. Nyní se ale objevil zajímavý program Spider (zdrojáky) a některé jeho parametry jsou velmi speciální. Např. to, že je to jak sampling, tak podle mne instrumentační profiler (ale bez zásahu do zdrojového kódu - pracuje přímo s EXE v paměti).

Další velmi zajímavou vlastností je podpora více vláken s tím, že se navíc zobrazuje jak jsou vlákna v akci.

Spider delphi profiler

Všimněte si, že profiler zobrazuje jména vláken (jedná se o demo z instalace Delphi - thrdemo), a zároveň je evidentní, že nejrychlejší byl TQuickSort což je velmi přehledně vidět z diagramu.

Více...

Datum: 2015-11-13 17:34:00 Tagy: profiler, optimalizace, vlakna

Optimalizace Praxe

SapMM - Efektivní Memory Manager pro multithreaded aplikace

FastMM4 je geniální. V podstatě ve většině instancí je nepřekonatelný - a že se o to stále někdo pokouší. Ale v případech brutálních vícevláknových (hodně vláken), paměťově intenzivních programů je možné, že FastMM přestane dobře škálovat díky tomu, že své interní struktury chrání spinlocky.

Více...

Datum: 2015-09-05 00:27:00 Tagy: FastMM, optimalizace, Threading

Optimalizace Praxe

Nový opensource JSON parser - JsonDataObjects

Jistě znáte jméno Andreas Hausladen - člověk který stojí za IDEFixPack (mimochodem zrovna vyšla nová verze 5.8) , v půlce jednotek z JCL najdete jeho jméno atd.

Několikrát jsem zde jeho dílo velmi obdivoval a to platí stále. Tak on částečně z nudy napsal nový JSON parser, dostupný na github a nepřekvapivě všem ostatním natrhl

Více...

Datum: 2015-02-19 21:53:00 Tagy: super, IDE, JSON, optimalizace

Komponenty Novinky Optimalizace

Zvětšení dostupné paměti 32bit programů v Delphi

Jednoho krásného dne Váš program zjistí, že trpí nedostatkem paměti. Přirozeným krokem je přechod na 64bit aplikace, ale existuje i jiná možnost. U EXE (resp. PE souboru) se dá specifikovat flag IMAGE_FILE_LARGE_ADDRESS_AWARE. Tento flag byl původně určen pro speciální mód 32bit Windows, kdy místo normálních cca 2GB paměti pro 32bit proces nabízel celých úžasných 3GB volné paměti. Praktická využitelnost tedy nic moc, protože tento mód Windows se moc nepoužíval.

Situace se obrátila s příchodem 64bit Windows (jen aby nedošlo k nedorozumnění - dávejte pozor kdy mluvím o 32bit procesu, kdy o 32bit Windows a kdy o 64bit Windows).

Více...

Datum: 2014-09-19 22:09:00 Tagy: delphi, optimalizace, praxe, windows, FastMM

Praxe

Soutěž 3 - výsledky

Výsledky soutěže včetně zdrojových kódů.

aktualizováno:

  • 21.3.2012 - ukončeno
  • 27.3.2012 - Neuromancer přidal soubor s vysvětlením algoritmu stáhnout

Demo projekt:

originální implementace - čas: 18868

Více...

Datum: 2012-03-21 19:28:00 Tagy: optimalizace

soutez

Optimalizační soutěž č.3

Pro zájemce třetí kolo soutěže. Úkolem je optimalizovat demo funkci, pravidla se od minule v podstatě nemění. Nejlepší (tj. nejrychlejší) vyhraje tričko s logem FireMonkey, flašku 4GB a případně 2x hrníček s logem Borland (viz minule, fakt se z něj dobře pije). Případně může být udělena i druhá cena (za nejzajímavější kód nebo nejrychlejší řešení bez ASM).

Uzávěrka je 21.3.2012 ve 20 hodin, ale řešení se může posílat průběžně (každý může poslat 3 řešení), ale nejdříve 1.3 - chtěl bych si zkusit ještě trošku poladit svoje řešení.

Pravidla

  • je možno použít libovolný kompilátor pascalu (Delphi 2 - Delphi XE2, FreePascal)
  • z povahy řešení není povoleno používat vlákna
  • testované budou výsledné Vámi přeložené aplikace, zdrojový kód je jen pro kontrolu vítězů
  • průběžně budou zveřejňovány přeložené aplikace, zaslané zdrojové kódy budou zveřejněny nakonec
  • Více...

    Datum: 2012-02-24 22:59:00 Tagy: optimalizace

    soutez

Něco ohledně uvolňování řetezců

Jen pro zajímavost pro začátečníky malé zamyšlení o řetezcích, Exception.CreateFmt a podobných funkcích. Více...

Datum: 2011-11-18 22:03:00 Tagy: začátečníci, praxe, optimalizace

Praxe

Delphi XE2 - pár tipů

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.

Více...

Datum: 2011-09-13 22:39:00 Tagy: FireMonkey, DelphiXE2, optimalizace, RTL

Novinky

Náhodné výkřiky 6

Opět něco co mne cestou praštilo do nosu. Dnes to bude případ "Test na prázdný řetězec", jeden zajímavý inzerát a help update pro XE. Více...

Datum: 2011-06-30 21:52:00 Tagy: optimalizace, embarcadero

Novinky v Delphi Začátečníci

Náhodné výkřiky 4

Resp. spíše několik zajímavých odkazů, třeba se někomu bude něco hodit.

Více...

Datum: 2011-05-24 22:38:00 Tagy: komponenty, praxe, optimalizace, RTL

Komponenty

Výsledky 2. soutěže

Tak jo, zde jsou výsledky. Když jsem tuto optimalizační soutěž navrhoval, tipoval jsem limit tak kolem 100ms. Navrhoval jsem úlohu, která je dostatečně rychlá na základní naprogramování, má potenciál na optimalizaci a která by se dala celkem jednoduše paralelně zpracovávat. Výsledek mne opravdu překvapil. Více...

Datum: 2011-02-28 20:29:00 Tagy: optimalizace

Optimalizace

Optimalizační soutěž č.2

Aktualizace:

  • update: výsledky
  • update6: Tomáš Kořínek
  • update5: J. Jelínek a jeho třetí pokus.
  • update4: aktualizace pořadí, změna na možnost 3 řešení, průběžné výsledky jsou zpět
  • update3: podle návrhu udělím i cenu za nejoriginálnější řešení - i když nebude nejrychlejší - něco jako minule cena poroty. Jako podporu pro zasílání i krapet pomalejších řešení.
  • update2: další soutěžící
  • update: vylepšené měření, můj druhý pokus, dva další soutěžící

Od minulé soutěže mi už otrnulo a jelikož převážná většina lidí v anketě nebyla proti dalšímu kolu soutěže a do jara ještě chvilku máme čas, je zde další úkol.

Proti minulému kolu jsem změnil několik pravidel:

  • je možno použít libovolný kompilátor pascalu (Delphi 2 - Delphi XE, FreePascal, ohledně C++Builderu zatím nevím zda by byl zájem)
  • testované budou výsledné Vámi přeložené aplikace (minule jen jedna obsahující všechny řešení), zdrojový kód je jen pro kontrolu vítězů
  • průběžně budou zveřejňovány přeložené aplikace, zaslané zdrojové kódy budou zveřejněny nakonec
  • Více...

    Datum: 2011-02-07 21:15:00 Tagy: optimalizace

    soutez

64 bit assembler není to samé co 32 bit

Hodně toho bylo napsáno ohledně 64bit Delphi. Aktuální stav je takový, že další verze Delphi by měla být i s 64bit kompilátorem (pokud se nestane něco hooodně nepředvídatelného jako zemětřesení atp).

Následující informace je čistě informativní a bez záruky a jen jako ukázka, vše se může změnit do doby vydání další verze Delphi.

Update Více...

Datum: 2010-12-28 20:59:00 Tagy: delphi64, optimalizace, assembler

Novinky v Delphi

Rychlost ukládání

V článku Základy JSON v Delphi kolega <z> nastínil porovnání rychlosti JSON, INI a dalších. Jelikož bylo několik dotazů pro upřesnění, zde je výsledek, který mi <z> zaslal a navíc testovací program. Je samozřejmé, že je zde prostor pro další optimalizaci, přesto to lze chápat jako ukázku a přehled možností.

Aktualizováno po druhé

Více...

Datum: 2010-11-05 22:48:00 Tagy: JSON, optimalizace

Praxe

IDEFixPack 4.0 BETA

Zase to udělal. Opět všechny překvapil.

Zatím jsem se nikdy nezmiňoval o nějakém beta rozšíření, ale tentokrát udělám malou výjimku. Andreas Hausladen uvedl beta verzi svého IDEFixPacku, kdy pro opakované použití CodeInsight (tj. nápovědy kódu po Ctrl+Space) není žádná prodleva a navíc je hodně robustní k chybám ve zdrojovém kódu, kdy nabídne nekompletní nabídku místo původního mlčení.

Podporované jsou Delphi 7, Delphi 2007, Delphi 2009, Delphi 2010 a Delphi XE.

Hmm, chtěl bych být tak dobrý. Člověk, který napíše plugin do IDE opravující problémy a (pravděpodobně) nemá zdrojové kódy IDE (i když několikrát řekl, že jeho vztahy s vývojáři jsou hodně nadstandardní) je prostě neuvěřitelný. Předpokládám, že se jeho úpravy brzo promítnou i do Delphi XE (jako to už bylo několikrát).

Jo a odkaz na IDEFixPack 4.0 BETA.

Více...

Datum: 2010-11-03 22:20:00 Tagy: nastroje, optimalizace, fix

Rozšíření Delphi

Znovu inline optimalizace

Ještě malá poznámka k inline optimalizacím. Tentokrát na ni upozornil přímo Allen Bauer a dokud na ni neupozornil on, tak jsem si tuto souvislost neuvědomil.

Mějme následující kvalitní kód:

program InlineTest;
{$APPTYPE CONSOLE}
{$O+}
uses
  SysUtils;

var
  s : string;
begin
  s:= 'Test';
  writeln(s);
  writeln(Length(s));
end.

Více...

Datum: 2010-09-24 23:12:00 Tagy: kompilátor, optimalizace, RTL

Optimalizace

Útržky kódu 1

Osobně si myslím, že programovat se člověk naučí jen psaním programů a rýpáním se v cizích kódech (no a ještě čtením delphi.cz). Rád se dívám, jak to dělají jiní a nechávám se inspirovat. A sem tam narazím na kousek kódu, který mne zaujme. A tak ho sem hodím v novém občasníku (tag utrzky).

Velmi dobrým zdrojem je VCL a našinec tak kolikrát najde velmi zajímavé konstrukce. Jako ta dnešní, která je velmi často používaná i jinde. Více...

Datum: 2010-09-08 21:53:00 Tagy: optimalizace, utrzky

Praxe

Delphi XE je dostupné

Nová verze Delphi je dostupná. Minule jsem již naznačil některé novinky, takže dnes jen upřesnění co mne zaujalo - později to bude snad detailněji rozepsané (stejně jako v případě Delphi 2010).

RAD Studio XE

Více...

Datum: 2010-09-01 00:48:00 Tagy: delphi XE, RAD Studio, kompilátor, optimalizace, RTL, VCL, verze, tool cloud

Novinky v Delphi

Delphi 2011 aneb Delphi XE

Blíží se podzim, trnky už pomalu dozrávají a nová verze Delphi je už také skoro hotová.

Jak je patrno ze změn v Delphi roadmap, někoho napadlo, že číslo roku už není dostatečně cool, takže nové Delphi bude místo Delphi 2011 mít název Delphi XE, kde XE není žádná zkratka, jen se tak prostě jmenují všechny produkty Embarcadera. Mimochodem: další verze bude asi XE2. Více...

Datum: 2010-08-14 22:47:00 Tagy: Delphi 2011, cloud, profiler, nastroje, regulární výrazy, optimalizace

Novinky v Delphi

Soutěž - výsledky

Naše malá soutěž je u konce, takže je na čase provést nějaké zhodnocení. Jsem rád, že se zúčastnilo celkem dost lidí a co je ještě lepší, že co člověk to algoritmus, přičemž některé opravdu překvapující. Rád bych všem poděkoval, bylo to velmi zajímavé. Více...

Datum: 2010-07-29 21:23:00 Tagy: optimalizace

soutez

Soutěž - mezistav

Jen tak pro povzbuzení apetitu a pro ukázání, že měření je celkem dostatečné - mezivýsledky. Jo a ještě poznámka: nezkoušejte takové triky, jako po prvním průběhu si do stringlistu přihodit výslednou hodnotu, nebo ještě lépe - nahradit text za výsledek. Takové řešení je neplatné, ale pobavilo. Navíc jsem upravil některé řešení na jednořádkové data - pro porovnání. Více...

Datum: 2010-07-25 21:07:00 Tagy: optimalizace

soutez

Rychlost výsledného kódu u jednotlivých verzí Delphi

Přiznám se, že toto jsem neplánoval.

Jak jsem připravoval tu soutěž ohledně programování, tak jsem si to samozřejmě musel referenčně zkusit. Psal jsem to v Delphi 2010 a po odladění mne napadlo, zda to půjde přeložit i neunicode verzí - samozřejmě to šlo bez problémů, ale rychlost zpracování byla celkem rozdílná a to jsem v podstatě nic neměnil - kromě odstranění direktiv, kterým starší verze nerozumí.

No a když už jsem byl v tom, tak jsem to zkusil se všemi verzemi co mám nainstalované. A tady je výsledek. Více...

Datum: 2010-07-16 22:23:00 Tagy: verze, optimalizace, kompilátor

Optimalizace

Malá soutěž v programování - aktualizace

Zkusíme to jinak. Nechal jsem se inspirovat v zahraničí a uděláme takovou malou soutěž. Já navrhnu zadání (dostatečně lehké) a Vy zkusíte poslat implementaci části programu, která bude provádět zadání. Pro normálního programátora cca 1-2 hodiny práce. Doufám, že to zkusíte.

Cílem je porovnat různé řešení a hlavně začátečníkům ukázat jak to dělají jiní. Budou vyhlášeni dva vítězové:

  • nejrychlejší řešení (tj. program s nejvyšší rychlostí)
  • cena poroty (to jako já :-)) za eleganci nebo čistotu a tak podobně, inspirace začátečníkům

Druhá cena nemusí být vyhlášena (málo účastníků, autor už vyhrál první cenu …). Více...

Datum: 2010-07-15 22:17:00 Tagy: delphi, verze, optimalizace

soutez

Vložené procedury a metody

Předchůdcem anonymních metod z Delphi 2009 jsou vložené (nested) procedury. To ale neznamená, že by éra vložených procedur skončila. Osobně je rád používám na zpřehlednění kódu v případě trošku delší procedury nebo na lokální provedení opakované akce. Hlavní výhodou je možnost přístupu k lokálním proměnným dané procedury. Více...

Datum: 2010-05-27 22:01:00 Tagy: optimalizace, kompilátor, Object Pascal, začátečníci

Optimalizace Začátečníci

Mini recenze Delphi 2007 (část 1 / 2)

Hodně lidí stále používají starší verze Delphi (nejčastěji 5-7) a nemají přehled o novinkách v novějších Delphi (a změn je hodně, hlavně ohledně jazyka), takže si je rychle prosvištíme. A to samé pak udělám s Delphi 2009 a snad i s Delphi 2010 (kde se pak budu jen odkazovat na tento článek).

Delphi 2007 je první verzí, která vznikla po oddělení vývojových nástrojů od Borlandu a je znát, že to programátorům dalo novou chuť pracovat a odstraňovat chyby (je pravdou, že Delphi 8 bylo neodladěné). IDE je interně nazýváno Galileo, první verze byla pro neštastné Delphi 8, pro Delphi 2007 se jedná již o 5 verzi IDE a proti předchozím verzím je opravdu stabilní. Delphi 2007 je poslední ne unicode verze a jedná se o nonbreaking verzi, tj. je binárně kompatibilní s Delphi 2006 (tj. dcu z Delphi 2006 lze používat ve 2007). Více...

Datum: 2009-12-08 22:57:00 Tagy: Delphi 2007, delphi, embarcadero, optimalizace, IDE, kompilátor, super

Jazyk Recenze

Profiler kódu pro Delphi

Profilery kódu nejsou moc často používanou pomůckou, ale někdy pomohou velmi výrazně zrychlit běh programu.

Zjednodušeně řečeno je profiler nástroj, který po dobu běhu programu zjišťuje informace o době trvání běhu jednotlivých částí programu a následně po ukončení běhu tyto statistiky zobrazí.

Existují (pokud vím) dva druhy profilerů: instrumentační a vzorkovací (samplovací).

Kdy použít profiler? Jednoduše když máte pocit, že by váš program mohl běžet rychleji. Někdy pak stačí malá změna ve výsledném kódu (např. odstranění zbytečného volání funkce, použitím nějaké cache nebo odstranění opětovného vyhodnocování špatně udělané property tím, že si zapamatujete její hodnotu) a výsledný kód běží rychleji a uživatel to ocení. Více...

Datum: 2009-12-06 21:11:00 Tagy: nastroje, delphi, optimalizace, profiler

Praxe