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říkaz with

S příchodem Delphi XE4 je with pro nové kompilátory (neoficiálně) deprecated. Zajímal by mne Váš názor v anketě (jako vždy vpravo nebo přes hlasov.at/l4ch.

Původně IMHO byl with koncipován jako hint kompilátoru, že by bylo vhodné být trošku efektivnější ohledně použití nějakého záznamu (později objektu). S tím, jak se jazyk rozšiřoval, začínalo docházet k riskantním situacím, viz. dále.

Více...

Datum: 2013-05-01 00:56:00 Tagy: delphi, začátečníci

Jazyk

String a stream

Pokud potřebujeme zapisovat někam data, nebo jen předávat data do jiné části programu, je výhodné používat některý z následníků TStream. Převážná část knihovny Delphi nebo knihoven třetích stran podporuje práci se streamy. Často ale také potřebujeme jen v paměti vytvořit datový proud a ten později zpracovat.

Základní třídou je TMemoryStream. V podstatě představuje data uložená v paměti - jakoby soubor v paměti. Pro operace s ním jsou určité metody, ale přece jen by to chtělo něco čistějšího, zejména pokud pracujeme s textovými daty. Řešením je použití např. TStringWriter, TStreamWriter resp. přímo TStringStream (nebo TStringBuilder) atd.

Pro neunicode Delphi je TStringStream implementován v podstatě jen jako string, což mi přišlo pěkné. V Unicode Delphi se jedná o následníka TBytesStream (resp. TMemoryStream).

Více...

Datum: 2012-05-03 23:07:00 Tagy: začátečníci

Praxe Začátečníci

Chyba pro dnešní den

Je třeba to zveřejnit jako odstrašující případ (kód je trochu upraven)


const
  ciTabBarInterval = 0;
  ciTabBarDay = 1;
  ciTabBarWeek = 2;
var
  bIsInterval: Boolean;
…

bIsInterval:= not TabBar.SelectedTab.Index in [ciTabBarDay, ciTabBarWeek];

Problém byl, když byl TabBar.SelectedTab.Index = 0. Takto samostatně je to evidentní že? Více...

Datum: 2012-04-19 17:40:00 Tagy: začátečníci, praxe, utrzky

Praxe Začátečníci

9x Delphi lekce v PDF pro začátečníky

Měl jsem v šuplíku několik krátkých textů (částečně to bylo pro cvičení z OOP) a přišlo mi škoda je tam nechat. Třeba to některého začátečníka něčemu naučí. Vhodně to doplňuje můj dřívější delší článek Object Pascal pro začátečníky, který je určen pro "znalejší" začátečníky.

Více...

Datum: 2012-02-09 23:46:00 Tagy: začátečníci, VCL, delphi

Začátečníci

Re: O konvencích - JaroB

JaroB postnul komentář, který je zajímavý, ale nečitelný díky formátování, takže jsem z něho udělal nový článek a komentář smazal. Ne ze vším sice na 100% souhlasím, ale většinou ano a je to zajímavé a inspirující (tedy až na tu část o CnPack a eventy, Frames a použití resource string - přístup k nim je výrazně pomalý). Jen se mi zdá, že konvence <> zásada dobrého návrhu aplikace.

Více...

Datum: 2012-01-18 18:11:00 Tagy: praxe, začátečníci

Praxe

O konvencích

Je mi jasné, že s následujícím nebude hodně lidí souhlasit, ale je to jen moje zkušenost a nemusíte samozřejmě souhlasit.

Dlouhým vývojem a ve spolupráci se spolupracovníky nyní používáme určité principy při pojmenovávání všeho možného. Zkusím je nastínit a vysvětlit proč mi to vyhovuje i když se to někdy odlišuje od oficiální konvenze Delphi. Jedná se o tři oblasti: komponenty, soubory a proměnné + metody.

Více...

Datum: 2012-01-12 19:50:00 Tagy: začátečníci, praxe

Praxe

TMenuItem a reference na objekty

Poněkud zavádějící nadpis, ale jedná se o případ, kdy potřebujeme mít asociaci mezi položkou menu (nebo něčím podobným) a nějakou datovou strukturou.

Poslední dobou jsem potřeboval vytvářet dynamicky položky menu a zároveň k nim mít vazbu na nějakou datovou strukturu. Za začátku jsem to řešil jako odkaz přes Tag někam, případně v Tag jsem měl přímo objekt, ale to byl problém s uvolňováním a tak mne napadlo jiné řešení (předpokládám, že mi v komentářích všichni napíší že je to stará známá věc - ale mne to prostě předtím nenapadlo).

Více...

Datum: 2011-12-14 20:32:00 Tagy: praxe, VCL, začátečníci

Praxe

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

Unit testing

Jedna z důležitých věcí je testování. Nevím jak vy, ale já nesnáším opakované testy. Tj. člověk udělá nějaké změny a následně by měl přetestovat úplně všechno. Ale všichni známe jak to dopadne …

A proto je vhodné použít unit testing, tj. nástroj, který za nás bude opakovaně provádět testy, které mu předepíšeme. Pro Delphi se jedná o DUnit, který je navíc součástí vyšších verzí Delphi (tj. od D2007 nebo možná i starších). Více...

Datum: 2011-07-26 22:09:00 Tagy: nastroje, delphi, ladeni, začátečníci, IDE, RTTI

Návody

Inno Setup

Miluji programy, které nemusím instalovat (a které mohu kdykoliv smazat).

Delphi je pro takové programy ideální, protože programy v něm napsané v podstatě nemusí mít žádné závislosti. Ale jsou situace, zvláště při komplikovanějších programech, kdy je pro korektní funkci vhodné provést instalaci např. protože potřebujete pro zápis někam administrátorské práva. Více...

Datum: 2011-07-01 21:00:00 Tagy: nastroje, praxe, začátečníci

Nástroje

Lehce o balíčcích

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,

Návody Praxe Začátečníci

Něco o exceptions

Koncept výjimek v Delphi je dobře vymyšlen a dokonce jsem kdesi četl, že je částečně patentován, jelikož v době Delphi 1 byl naprosto převratný způsobem zpracování za běhu (nějak to souviselo s efektivním odvíjením zásobníku při výjimce, detaily si nepamatuji a snad se nepletu).

Mimochodem Windows podporují výjimky až od 32bit verzí, tj. Delphi 1, které bylo 16bit mělo výjimky vlastní a až Delphi 2 mapují část výjimek na výjimky Windows.

Od Delphi 1 je základem třída Exception, která byla v Delphi 2009 trochu rozšířena - přece jen je to už pár let. Více...

Datum: 2011-04-10 22:49:00 Tagy: Delphi 2009, RTL, začátečníci, ladeni

Novinky v Delphi

Něco o řetězcích a unicode

Zkusím napsat něco typu string, unicode a příbuzných typech v návaznosti na minulý článek o TEncoding. Předem upozorňuji, že:

  • většinou (cca 99%) si člověk vystačí s typem string a zde uvedený text ho nemusí moc trápit
  • nebude to 100% výklad, ale třeba to někomu pomůže a popř. to někdo upřesní, kdybych něco popletl
  • je to trochu hutnější text, tak snad to nebude zmatené

Více...

Datum: 2011-03-30 21:17:00 Tagy: praxe, delphi, začátečníci, unicode, Object Pascal, super

Praxe

Kódujeme, kódujete - TEncoding

Do doby než nás spasilo unicode kodování snad každý programátor potřeboval převádět mezi různými codepage. No ono je to někdy třeba i dnes. Většinou se u nás používala Synapse, ale s příchodem Delphi 2010 byla (konečně) RTL Delphi výrazně (a to dost šikovně) rozšířena o podporu převodu mezi různými kódováními.

Více...

Datum: 2011-03-24 23:09:00 Tagy: RTL, Delphi 2010, začátečníci, VCL

Novinky v Delphi

TValueListEditor a TButtonedEdit

Součástí novějších Delphi jsou i dvě méně známé, ale zajímavé komponenty: TValueListEditor a TButtonedEdit. První slouží k zadávání nebo editaci dvojice klíč a hodnota, druhá komponenta je TEdit s volitelnou možností až dvou tlačítek (vpravo a vlevo).

TValueListEditor

Více...

Datum: 2011-03-15 23:16:00 Tagy: komponenty, začátečníci, VCL

Komponenty

Balloon Hint

Delphi 2009 rozšiřují třídu TControl o několik věcí a mezi nimi i o

property CustomHint: TCustomHint read GetCustomHint write SetCustomHint;
property ParentCustomHint: Boolean read FParentCustomHint write SetParentCustomHint;

V případě speciálních požadavků na tvar okna Hint je možno této možnosti využít, ale je tu i jiná možnost.

Následníkem TCustomHint je totiž i komponenta TBalloonHint (screenshot je z Delphi XE na upravených Windows XP).

TBalloonHint

Více...

Datum: 2011-03-04 20:53:00 Tagy: Delphi 2009, komponenty, VCL, začátečníci

Komponenty Novinky v Delphi

Komunikace přes HTTP pomocí Indy

Opět přicházím s malým článkem pro využití komponent Indy.

Nyní přináším drobné základy pro komunikaci pomocí protokolu HTTP a nabízím alternativu k Synapse, které ve svém článku popsal Radek - viz. komunikace přes HTTP pomocí Synapse. Více...

Datum: 2011-01-24 19:43:00 Tagy: synapse, začátečníci, Indy

Praxe

Případ FieldByName

Často programátoři v Delphi používají pro přístup k jednotlivým položkám datasetu vyhledávání přes FieldByName. Takový kód je celkem čitelný, ale lehce může sklouznout k velkým časovým ztrátám. Více...

Datum: 2011-01-16 20:36:00 Tagy: utrzky, začátečníci, VCL, hacky

Praxe

Odesílání mailů přes SMTP v Indy

V jednom minulém článku popsal Radek jak odeslat e-mail za pomocí Synapse.

Já dávám přednost Indy a proto zde připojuji jednoduchý návod jak Indy využít ke stejnému účelu. Více...

Datum: 2011-01-10 20:39:00 Tagy: komponenty, open source, synapse, začátečníci

Praxe

Odesílání mailů přes SMPT za pomocí Synapse

Minule jsem ukazoval, jak se dá poslat mail přes nainstalovaný program za pomocí MAPI (a Pepák v komentářích i přímo přes volání API MAPI), dnes ukáži vytvoření mailu za pomocí Synapse a jeho odeslání přes SMTP.

Synapse je knihovna nevizuálních komponent pro síťovou komunikaci na bázi blokujících soketů podporující kromě Delphi i Kylix a FreePascal. Kromě šikovného zapouzdření soketů obsahuje kvalitní podporu pro různé protokoly a další věci (včetně SSL). Její hlavní autor (Lukáš Gebauer) odvedl skvělou práci a osobně je jeho knihovna pro mne jedním z nejlepších open source kódů (spolu s FastMM4, VirtualTreeView atd.) a pravděpodobně i uzavřených. Více...

Datum: 2010-12-12 22:30:00 Tagy: začátečníci, utrzky, synapse

Praxe

Zasílání mailů 1 - MAPI

Někdy je třeba z aplikace umožnit zaslání mailu uživatelem. Nejjednodušší (ale ne vždy použitelný, protože ne každý má instalovaného klienta) způsob je přes MAPI (Mail API). Více...

Datum: 2010-12-07 21:57:00 Tagy: utrzky, začátečníci

Praxe

DLL jako plugin

Minule jsem ukázal jak se DLL dělá, na co je atd. a dnes zkusíme něco praktického. Zkusíme implementovat do naší aplikace pluginy, tj. rozšiřující moduly.

Náš program zjistí dostupné pluginy, zobrazí informace, co který plugin dělá a po výběru pluginu uživatelem v něm zavolá modální dialog. Více...

Datum: 2010-07-10 23:13:00 Tagy: DLL, FastMM, začátečníci

Praxe

PDF verze článků

Několik uživatelů se mne ptalo, zda by nebylo možné získat obsah serveru v PDF. Takže Delphi v PDF.

Více...

Datum: 2010-06-24 22:51:00 Tagy: delphi, začátečníci, PDF, dokumentace

Server

ActionList aneb jak si ušetřit práci

Sem tam se ke mně dostane na posouzení nějaký kód a v mnoha případech jsem překvapen, proč si autor trochu neusnadní práci. Konkrétně třeba za pomocí komponenty ActionList. Více...

Datum: 2010-06-21 20:38:00 Tagy: začátečníci, VCL, delphi, super

Začátečníci

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

Delphi Object Pascal pro začátečníky

Pořád cítím, že bych měl něco napsat i pro začátečníky, kde bych osvětlil některé věci ohledně Object Pascalu, když už se na jejich znalost spoléhám.

A tak jsem se podíval do svého archívu a spojil několik útržků textů, které jsem kdysi napsal z jiných důvodů a výsledek trošku upravil. Nejedná se o učebnici, ani o kompletní přehled, ale spíše takové základy a postřehy. Pro pochopení předpokládám aspoň základní znalosti Pascalu. Více...

Datum: 2010-05-17 23:15:00 Tagy: delphi, začátečníci, Object Pascal, super

Začátečníci