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?

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

Tipy a triky pro IDE

Zkusím ukázat několik triků (možná je i znáte) jak si usnadnit život s IDE.

Posuvné breakpointy a bookmarky

Nevím jak je to u Vás, ale už se mi několikrát stalo, že si nastavím breakpoint (včetně jeho parametrů) a pak si uvědomím, že bych ho chtěl někde jinde. V novějších Delphi ho prostě chytnete a přetáhnete. A pokud při tom držíte CTRL (objeví se u něho malé plus jako na obrázku) tak ho jednoduše naklonujete včetně parametrů. O přetahování aktuálně vykonávaného řádku během ladění jsem psal minule. (novější Delphi, myslím 2009+)

posuvné breakpointy

Více...

Datum: 2010-11-13 00:35:00 Tagy: IDE, delphi, ladeni

Praxe

TDictionary

V minulém článku o porovnání rychlosti JSON s jinými způsoby se diskuze trošku rozjela, tak přicházím i se svým řešením pro rychlou implementaci za pomoci TDictionary, které je velmi rychlé a umožňuje použití generik.

TDictionary neumožňuje ukládání a načítání, takže jsem si musel vypomoci sám, abych dodržel podmínky z minulého článku (procedury mLoad a mSave).

Časová náročnost je velmi malá (největší čas trvá mé ne moc optimalizované načítání a ukládání), samotná práce s položkami je velmi efektivní (2000 položek, 500 aktualizací).

třída: celkova doba : doba prace bez nahravani/ukladani

HashedStringList: 5969 : 5953
TDictionary: 16 : 0
MS XML: 29922 : 29781
TIniFile: 2469 : 2469
TMemIni: 5953 : 5937
StringList: 3016 : 3016

Více...

Datum: 2010-11-08 08:48:00 Tagy:

Praxe

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

Několik tipů pro debugger - 3 díl

Pravděpodobně poslední pokračování mini série o temných zákoutí ladění v Delphi. Dnes to bude o modulech, data breakpointech, thread breakpointu a nějaké drobnosti. Více...

Datum: 2010-10-25 22:44:00 Tagy: debugger, ladeni

Praxe

Příklad použití RTTI - výpis typů v programu

Zkoušel jsem si hrát s RTTI (Run Time Type Information) a byl jsem tak nadšen jednoduchostí použití, že výsledkem je jednoduchý program, který ve stromě zobrazuje známé typy včetně metod, property a polí. Zároveň ukazuje efektivní použití anonymních metod, generických typů a to vše na 100 řádcích včetně deklarace. Více...

Datum: 2010-10-20 22:43:00 Tagy: RTTI, generics, anonymni metody

Praxe

Základy JSON v Delphi

V tomto článku popíši základy použití JSON v Delphi.

Článek mi byl zaslán a autor chce zůstat jen pod nickem <z>.

Několik základních faktů o JSON

  • JSON je jednoduchý formát určený a vyvinutý přímo pro výměnu dat.
  • JSON je alternativa ke XML, vhodnost jednoho nebo druhého je individuální.
  • Úspora v zapsání stejných dat v JSON oproti XML může být až 40% (je to dáno zřejmě tím, že se nevyužívájí párové tagy).
  • JSON je velmi stabilní formát, tj. neexituje verze 1, 2, …
  • Data v JSON jsou ukládána pomocí Unicode (UTF-8), a proto odpadá problém při využití různých kódování.
  • Data v JSON mohou obsahovat jak páry (název a k tomu hodnota), tak i samotné hodnoty (pole hodnot).
  • Více...

    Datum: 2010-10-19 22:34:00 Tagy: JSON, komponenty

    Praxe

Úvod do datasnap serverů včetně ladění

John Kaster napsat moc pěkný článek o DataSnap serveru v Delphi, nastavování IIS a ladění ISAPI (jak pro IIS 7.5, tak pro IIS 6).

Osobně se mi líbí prezentovaná idea vytvářet ISAPI rozšíření jako samostatný exe program (což Delphi XE umožňuje), který se chová jako server a pak ho jen jednoduše konvertovat do podoby ISAPI.

Více...

Datum: 2010-10-09 08:24:00 Tagy: data snap, REST, ladeni, delphi XE,

Praxe

Delphi JSON Viewer

Paweł Głowacki zrovna publikoval svůj článek o úvodu do JSON v Delphi, což je téma, které bude prezentovat na CodeRage 5 a zároveň uvolnil i zdrojové kódy pro svůj prohlížeč JSON.

Domovská stránka JSON, Pawel o JSON na EDN.

Více...

Datum: 2010-10-04 21:27:00 Tagy: JSON

Praxe

JSON v Delphi

Komentáře k minulému článku mne přivádí k otázce o JSON v Delphi. Hodně o tom uvažuju a tak se ohledně JSON zeptám zkušenějších:

Jakou tedy používáte implementaci JSON v Delphi? Vím o těchto implementacích: Více...

Datum: 2010-10-03 13:18:00 Tagy: JSON

Praxe

Několik tipů pro debugger - 2 díl

V minulém díle jsem začal ukazovat pár triků pro ladění a dnes je tu pokračování. Více...

Datum: 2010-09-29 23:28:00 Tagy: debugger, ladeni, Delphi 2010, delphi XE, Delphi 2007, Delphi 2009

Praxe

Několik tipů pro debugger

Laděním našinec zabije velkou část času u vývoje programu. Nebudu Vás podceňovat a ukazovat základní věci jako zadávání breakpointu, ale s debuggerem zkusíme jiné věci. Více...

Datum: 2010-09-20 21:26:00 Tagy: debugger, ladeni, super

Praxe

Ú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

Další malý háček

Naši malou galerii háčků (viz tag háček) rozšíříme o další položku. Tentokrát lehce zmátneme IDE a linker. Ale háček se dá použít i jinak. Představme si, že máme instalovanou komponentu a v jednom formuláři ji chceme trochu pozměnit bez toho, aby byla instalována do IDE. Prostě takový malý Cimrmanův úkrok stranou. Více...

Datum: 2010-08-19 21:54:00 Tagy: hacky, VCL

Praxe

Exception dialog

V každém programu je chyba. A teď co s tím. Podle mne nejhloupější variantou je ukončit program, protože uživatel přijde o data. Více...

Datum: 2010-08-02 21:28:00 Tagy: open source, ladeni, nastroje

Praxe

Zrychlení přepínaní mezi kódem a formulářem v Delphi 2010

Andreas Hausladen zjistil, že pokud používáte jen novou paletu komponent můžete ještě zrychlit přepínání mezi formulářem a kódem, kdy lze pozorovat drobné "zaváhání".

Malá odbočka: nová anketa. Více...

Datum: 2010-07-14 22:24:00 Tagy: Delphi 2010, IDE, fix

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

XML dokumentace a Help Insight

Už několik verzí Delphi podporuje XML dokumentaci přímo v kódu (dříve bylo vhodné pro dokumentaci použít PasDoc - což se samozřejmě nevylučuje). Více...

Datum: 2010-06-09 00:19:00 Tagy: IDE, dokumentace

Praxe

TObject a jeho metody

Veskrze každý zná základní třídu TObject a její metody jako Free, constructor Create a destructor Destroy. Asi znáte i užitečnou class function ClassName, která vrací název třídy a sem tam šikovné metody ClassType a ClassParent, které vrací TClass, tj. referenci na třídu za běhu. Více...

Datum: 2010-05-24 22:38:00 Tagy: delphi, Delphi 2010, RTL, VCL, RTTI

Praxe

DLL, Delphi a FastMM4

Pravidelní čtenáři již vědí co je FastMM4, pro ty dva zbývající: nejlepší správce paměti, defaultní správce paměti pro Delphi 2005+, detektor chyb v uvolňování a v neposlední řadě náhrada ShareMem alias BorlndMM.dll, což je ve starších verzích Delphi originální možnost pro předávání dat do DLL - což ale předbíháme. Více...

Datum: 2010-05-07 22:01:00 Tagy: RTL, VCL, FastMM, DLL

Praxe

Háček: nahrazení funkce nebo metody

Ve třetím a asi i posledním díle mini seriálu ukáži nahrazení cizí funkce, procedury nebo metody (nevirtuální). Tímto způsobem se dá opravovat cizí kód v koupených komponentách nebo třeba v samotné RTL.

Opět jsem vykradl VCLFixPack, ale ostatní to mohou dělat trochu odlišně. Příkladem odlišného řešení (a možného použití) je vyřešení problému s Data Execution Prevention (DEP) v Delphi RTL ve starších verzích Delphi (do verze D2005). Více...

Datum: 2010-04-26 23:51:00 Tagy: hacky, RTL, VCL, super

Praxe

Háček: nahrazení virtuální metody cizí třídy

Pokračujeme druhým dílem háčků. Dnes to bude nahrazení virtuální metody třídy.

Samozřejmě je většinou jednodušší ze třídy podědit a metodu nahradit v následníku, ale někdy může být výhodné přímé nahrazení. Příkladem mohou být ladící výpisy nebo oprava (vylepšení) nějaké komponenty. Více...

Datum: 2010-03-29 20:37:00 Tagy: hacky, VCL

Praxe

VCLFixPack, IDEFixPack a DelphiSpeedUp

Všechny v nadpisu uvedené balíčky mají jedno společné - jejich autorem (a nejen jejich) je Andreas Hausladen. Tento maník (mimochodem držitel prestižního ocenění Spirit of Delphi 2007) je prostě neuvěřitelný.

Nejenže je jeden z nejaktivnějších autorů v JCL, jeho paleta komponent (vylepšená) se dostala i do Delphi 2010 a většina kódu z DelphiSpeedUp do Delphi 2009+, ale i udržuje balíček oprav IDE (tj. IDEFixPack) a oprav některých chyb ve VCL (tj. VCLFixPack). Více...

Datum: 2010-03-25 21:03:00 Tagy: VCL, rozšíření, open source, fix, DDEV

Praxe Rozšíření Delphi

Háček: přístup k private a protected polím cizí třídy

První dva háčky co ukáži slouží k přístupu k private a protected částem cizí třídy umístěné v jiné jednotce. Druhý háček je celkem častý a proto s ním začneme. Více...

Datum: 2010-03-19 23:19:00 Tagy: hacky

Praxe

Remote debugging v Delphi

Sem tam je vhodné provádět ladění přímo na počítači klienta, protože na vývojovém počítači nejde problém nasimulovat. Samozřejmě v takovýchto případech není vhodné (a ani často možné) instalovat Delphi na počítač klienta a proto Delphi nabízejí možnost vzdáleného ladění (Remote debugging). Jak tedy na to? Více...

Datum: 2010-02-21 22:24:00 Tagy: debugger, delphi, ladeni, nastroje, super

Praxe

Použití anonymních metod v Delphi

Naprosto perfektní použití anonymních metod z Delphi 2009+

type
  THelper = class
    class procedure Lock(O: TObject; Proc: TProc); static;
  end;

class procedure THelper.Lock(O: TObject; Proc: TProc);
begin
  TMonitor.Enter(O);
  try
    Proc();
  finally
    TMonitor.Exit(O);
  end;
end;

Použití je pak velmi jednoduché, uvedený kód je chráněn kritickou sekcí:

procedure TMyObject.Process;
begin
  Obj.Lock(Self, procedure
    begin
      //kód chráněn kritickou sekcí
    end);
end;  

Fakt prima.

původní článek

Více...

Datum: 2010-01-29 23:15:00 Tagy: Delphi 2009, anonymni metody

Praxe

Lehký úvod do Virtual TreeView - pokračování

Minule jsem nastínil základy práce s Virtual TreeView, ale uvědomil jsem si, že jsem pořádně nezdůraznil virtuální aspekt práce této komponenty. Zkusím to dnes ještě napravit. Více...

Datum: 2010-01-22 21:27:00 Tagy: komponenty, VCL, Virtual TreeView, super

Praxe

Lehký úvod do Virtual TreeView

Virtual Treeview jsem již uváděl v přehledu zajímavých komponent pro Delphi. Abych se přiznal, tak tuto komponentu považuji za jednu z nejlepších co pro Delphi existují a navíc se jedná o Open Source kód. Dá se použít jako pekelně rychlý strom nebo něco jako ListView nebo kombinace obojího a nebo prostě cokoli. Více...

Datum: 2010-01-20 22:07:00 Tagy: komponenty, VCL, Virtual TreeView

Praxe

Dočasné řešení pro shell extensions v Delphi a Windows 64

Jelikož je Delphi64 stále jen ve vývoji a pro shell extensions pro Windows 64 je třeba 64 bit DLL, je třeba si dočasně pomoci jinak (tedy pokud potřebujete rozšiřovat shell).

Na CodeCentral je k dispozici malý program, který po kompilaci v 64 bit. verzi FreePascalu umožňuje spustit externí program již v Delphi, tj. 32 bit. Jinak jde samozřejmě i zkompilovat v Delphi, ale výsledek bude jen pro 32bit Windows.

originální vlákno na Non-Technical

Mimochodem svoje přání ohledně vývoje delphi lze prezentovat hlasováním na delphi.uservoice.com.

Více...

Datum: 2010-01-18 20:35:00 Tagy: delphi64, dll

Praxe