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?
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.
Datum: 2013-05-01 00:56:00 Tagy: delphi, začátečníci
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).
Datum: 2012-05-03 23:07:00 Tagy: začátečníci
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
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.
Datum: 2012-02-09 23:46:00 Tagy: začátečníci, VCL, delphi
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.
Datum: 2012-01-18 18:11:00 Tagy: praxe, začátečníci
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.
Datum: 2012-01-12 19:50:00 Tagy: začátečníci, praxe
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).
Datum: 2011-12-14 20:32:00 Tagy: praxe, VCL, začátečníci
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
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
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
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,
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
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:
Datum: 2011-03-30 21:17:00 Tagy: praxe, delphi, začátečníci, unicode, Object Pascal, super
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.
Datum: 2011-03-24 23:09:00 Tagy: RTL, Delphi 2010, začátečníci, VCL
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).
Datum: 2011-03-15 23:16:00 Tagy: komponenty, začátečníci, VCL
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).
Datum: 2011-03-04 20:53:00 Tagy: Delphi 2009, komponenty, VCL, začátečníci
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
Č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
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
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
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
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
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
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
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
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