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?

Delphi XE a problém s generiky

Dnes bych se s našimi čtenáři rád podělil o jednu nepříjemnou zkušenost z Delphi XE, související s použitím generických struktur a tříd.

Dobrá zpráva je, že v Delphi XE2 Update 3 se tato chyba již neprojevuje. Problém se týká případů, kdy nadefinujete generickou strukturu s více jak dvěma typy (TMyStruct<A,B> = record … end), velikost implementace není větší než 4 byty a voláte funkci, která má tuto strukturu vrátit jako svůj výsledek.

Více...

Datum: 2012-02-02 19:46:00 Tagy: delphi XE, generics

Praxe

Případ TinyDB a XE2

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.

Více...

Datum: 2012-01-28 21:55:00 Tagy: ladeni, DelphiXE2, RTL

Praxe

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

Stažení souboru za pomocí WinInet

Sem tam potřebuji stáhnout jednoduchý soubor z webu. Většinou to dělám za pomocí Synapse a nějaké procedury z jednotky httpsend. Člověk ale musí navíc dělat opičky kolem zjišťování proxy - buďto z registru (HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings) nebo za pomocí jednotky ze synapse SynaMisc a procedury GetIEProxy.

Ale zdá se mi, že v případě autokonfigurace proxy ani jeden ze způsobů nefunguje. Existuje ještě možnost stažení souboru přes WinInet, což je součást instalace IE (resp. nyní nejen IE) a používá to část IE a tak je velká šance že to projde přes různé filtry (teda doufám).

Více...

Datum: 2012-01-02 23:40:00 Tagy: utrzky, praxe, web

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

Delphi a SFTP

SFTP není FTP přes SSH, ale jiný protokol, který FTP čím dál více nahrazuje. Jaké komponenty můžeme v Delphi použít?

Více...

Datum: 2011-12-05 21:43:00 Tagy: komponenty, praxe, synapse, SSH, SFTP

Komponenty Praxe

Ribbon control a styly

Pokud použijete VCL styly z Delphi XE2 a TRibbon control (resp. to asi souvisí s Glass window na Vista+) zjistíte několik problémů ohledně kreslení. Naštěstí existuje možnost jak upravit kreslení libovolného prvku a tak jsem tuto možnost využil a sprostě jsem kreslení obešel.

Více...

Datum: 2011-11-30 22:29:00 Tagy: DelphiXE2, fix, VCL

Praxe

Náhodné výkřiky 17

Jako obvykle pár připomínek z toho co mne zaujalo (THandle, Outlook, Fossil …) plus zamyšlení a info nakonec. Více...

Datum: 2011-11-23 20:15:00 Tagy: vykriky, nastroje, embarcadero, DelphiXE2, Delphi cz

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

Spolupráce kódu Delphi a Java

Použití Java Native Interface v Delphi

Při řešení jednoho projektu jsem byl postaven před úkol jak připojit k již existujícímu projektu napsanému v Javě další funkčnost a uživatelská rozhraní napsaná mými kolegy delphisty. Nativní kód byl vytvořen v Delphi 2007.

Tvůrci Javy, vědomi si toho, že v některých případech je použití nativního kódu nezbytné, vybavili Javu rozhraním pro spolupráci s nativními jazyky (měli tedy na mysli především C/C++) - rozhraním JNI (Java Native Interface). Toto řešení také otevřelo možnost v nových Java projektech využít i již existující a odladěný nativní kód.

Více...

Datum: 2011-11-15 20:19:00 Tagy: praxe

Praxe

TGlassFrame pro Windows Vista

Windows Vista přinášejí podporu Glass efektu. A Delphi VCL toto podporuje od verze 2007. Více...

Datum: 2011-11-13 22:50:00 Tagy: Delphi 2007, windows, Vista, VCL

Praxe

Delphi XE2 a problém s ModalResult v DFM

Byla objevena celkem nešťastná chyba ve VCL v XE2, ale která zasáhne mizivé procento uživatelů. Jedná se o to, že během integrace FireMonkey do Delphi došlo chybou k přečíslování 4 konstant pro ModalResult. A jelikož tyto konstanty jsou ukládány v DFM jako čísla a ne názvy, dojde při otevření staršího projektu, který tyto konstanty používají, v Delphi XE2 ke změně jejich významu a vice versa.

Více...

Datum: 2011-11-09 19:56:00 Tagy: DelphiXE2

Praxe

Chyba MDI v XE a XE2

Igor Gottwald mi poslal popis řešení problému ohledně chyby knihovny Dialogs/Vcl.Dialogs při používání MDI.

Jedná se o problém, kdy vývojář do okna MDIChild umístí více editačních prvků a v některém z nich, při jeho opuštění (OnExit) zobrazí uživateli standardní hlášení (ShowMessage, MessageDlg nebo TaskMessageDlg).

Více...

Datum: 2011-10-18 21:51:00 Tagy: delphi XE, DelphiXE2, VCL

Praxe

Record helper

Class helper je známá věc, ale co třeba takový Record helper?

Poprvé se to objevilo jako mizerně dokumentovaná věc v BDS 2006 v Delphi for .NET. A teprve následně se to propagovalo do verze Win32. Tady měl Borland zpoždění - .NET verze byla vždycky o krok napřed. Více...

Datum: 2011-09-23 19:57:00 Tagy: class helper, kompilátor

Praxe

Několik poznámek ohledně upgrade mezi verzemi Delphi

Jaroslav Beneš zaslal trochu zkušeností ohledně upgrade projektů ze starších verzí. Kromě jiného je autorem aktuální RxLib pro Delphi XE2 nebo udržuje DelphiX atd.

Jen dobrá rada (editora): než budete sami upgradovat cizí komponenty, podívejte se zda to neudělal někdo jiný. Většina populárních komponent je nejméně v unicode verzi (ne-li rovnou v XE2) a tam skok na XE2 nebo 64bitů není tak velký jako mezi Ansi - Unicode.

Více...

Datum: 2011-09-08 21:47:00 Tagy: praxe, delphi

Praxe

HTTP server v Delphi - Delphi a Web II

Abych ještě dokončil myšlenku. Takový HTTP server v aplikaci může být zajímavá věc. Pokud znáte utorrent tak ten kromě Windows GUI obsahuje i vlastní HTTP server, který pokud se povolí, umožňuje sledovat stav stahování vzdáleně. Více...

Datum: 2011-08-26 00:19:00 Tagy: synapse, web, Indy

Praxe

Užitečné pomůcky pro ladění

Ladění se zde věnuji často, ale jelikož se některé otázky stále opakují, zde je seznam aplikací, které mi pomáhají a které mohou pomoci i při řešení Vašich problémů.

Možná je to tím, jaký druh programů píši, ale na mém HDD nesmí chybět následující aplikace, které používám jako pomůcky při ladění:

  • WireShark
  • Process Monitor (nahradil dříve používaný RegMon a FileMon nefungující na Windows 7)
  • PortMon (už jen sporadicky)
  • Process Explorer
  • Sampling Profiler - profiler kódu viz. můj odkazovaný článek
  • wget - původně unix program, který např. uloží stáhnutou odpověď z HTTP serveru (např. i včetně hlaviček) do souboru a tam se dá pak prozkoumat co je špatně
  • Unlocker - ukáže, kdo zamkl soubor, kdo ho drží a umožní ho odblokovat nebo kopírovat

No a když už jsem v tom tak i následující nástroje

  • Dependency Walker - co používá váš program za knihovny a které knihovny používají ty knihovny atd.
  • PeInfo, PEiD, StudPe (to ale jen pro případ práce s cizími programy, už jsem je zmiňoval dříve)
  • HiJackThis - pokud Vás zajímá co se zavádí ve Windows

a další Více...

Datum: 2011-06-01 22:16:00 Tagy: praxe, ladeni, nastroje

Praxe

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

RAD PHP XE - podruhé

Jelikož mi neustále chodí maily ohledně mého staršího článku ohledně RAD PHP XE, zkusím napsat návod i když na to nejsem opravdu odborník. Více...

Datum: 2011-04-26 21:03:00 Tagy: RadPHP

Praxe

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

Problém rozlišení obrazovky resp. velikosti písma

Nedávno šel v konferenci problém ohledně různého DPI (nebo velikosti písma) při navrhování programu a za běhu. Sice jsem přispěl řešením, ale jelikož se jedná o jednoduché řešení, je škoda kdyby zapadlo.

Například následující okno:

Originál

Více...

Datum: 2011-02-13 20:26:00 Tagy: VCL, utrzky, praxe

Praxe

Případ výměny vlajky aneb změna resource

Dostávám relativně často žádost o pomoc - a hodně často i pomůžu, zvláště pokud se jedná o zajímavý problém (nebo i z jiných důvodů).

Nedávno se mi ozval člověk, který spravuje komunitní stránky kolem jednoho staršího programu napsaného v Delphi 5. Program je celkem speciální a také unikátní, takže časem se rozšířil po světě mezi uživateli v astro komunitě. Více...

Datum: 2011-02-02 21:40:00 Tagy: nastroje

Praxe

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

Download nebo upload přes HTTP za pomocí Synapse

Celkem častým požadavkem (a dotazem) je stažení určitého souboru z webu. Osobně to např. používám pro download novinek, které mám uložené v RSS formátu na webu a zobrazení v aplikaci. Pokud používáte knihovnu Synapse, tak to není problém (věřím, že někdo následně ukáže i možnost v Indy). Více...

Datum: 2011-01-19 23:45:00 Tagy: synapse, web

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

Velikosti EXE u jednotlivých verzí Delphi

Narazil jsem na takovou debatu o velikosti EXE u prázdné VCL aplikace. A jelikož jsem si chtěl upřesnit, jak je to s tou velikostí u jednotlivých verzí Delphi, strávil jsem cca 45 minut vytvářením prázdných aplikací a porovnáváním pomocí JCL Project Analyzeru, který je součástí instalace JCL. Více...

Datum: 2011-01-13 00:06:00 Tagy: delphi, verze, nastroje

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

Několik tipů z konverze 32bit na 64bit

Zhruba před rokem a půl jsme řešili vzrůstající počet požadavků uživatelů na vylepšení podpory x64 platformy v naší aplikaci Spyware Terminator. Aplikace je z valné části napsána v Delphi (aktuálně 2007) a tak jsme museli řešit i konverzi systémové služby pro 64bit platformu Více...

Datum: 2011-01-05 09:00:00 Tagy:

Delphi Jazyk Nástroje Praxe

FastMM4 a detekce přepisu paměti

Snad už naposledy malá poznámka ohledně využití FastMM4 při ladění. Tentokráte jak na detekci zápisu mimo alokovanou paměť. Více...

Datum: 2011-01-03 21:17:00 Tagy: FastMM, ladeni, super

Praxe