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?
V dalším díle bych rád ukázal komponenty od MiTeC a musím se přiznat, že je to trochu ostuda, že to zde nebylo dříve.
Michal Mutl alias MiTeC nabízí za pakatel (cca 110EUR) nejobsáhlejší komponenty ohledně všeho možného v systému, od detekce HW s neskutečnými detaily (System Information Component Suite), přes monitorování systému, přes Portable Executable Reader (včetně detekce kompilátoru) až po Key a Mouse logger komponenty.
Datum: 2020-07-09 22:47:00 Tagy: delphi, komponenty
Další zajímavou komponentou, resp. balíčkem je ZXing.Delphi. Jedná se o port ZXing (Zebra Crossing) což je populární knihovna pro čtení všech možných čárových kódu, včetně QR.
Port je plný, tj. bez DLL knihovny, celý je v Object Pascalu a podporuje jak VCL, tak FMX i pro mobilní kompilátory. FMX má automaticky podporu kamery i na mobilech, pro VCL je v demech jednoduché zapouzdření kamery přes DirectShow, ale můžete použít cokoliv jiného.
Licence: free, Apache 2.0 license
Více...Datum: 2020-06-22 21:41:00 Tagy: komponenty
Pokračujeme v seznamu zajímavých komponent balíkem TECNativeMap. Nejedná se o žádný další wrapper nad prohlížečem k zobrazování map, ale plnohodný nativní zobrazovač map k různým datovým podkladům psaný celý v Delphi na bázi jak VCL tak FMX takže kompletně bez závislosti na nějakém prohlížeči.
Co ho odlišuje od nějakého obyčejného zobrazovače map? Jednak široká podpora mapových podkladů, dále si do něho můžete šáhnout a hlavně může být celý v módu OFFLINE a co byl můj případ, můžete mu v módu OwnerDraw šoupat svoje podklady (Tile) které nejsou veřejné např. z DB, nebo v mém případě číst z proprietárního formátu s neveřejnými daty.
A to celé bez nutnosti připojení k internetu nebo naopak pro online data to automaticky transparentně stahuje.
Zároveň komponenta umožňuje volitelně vytvářet na disku cache stažených obrázků, takže se příště nic nemusí stahovat. Všechno je to svižné a máte to pod kontrolou.
Datum: 2020-06-14 17:27:00 Tagy: Firemonkey, VCL, komponenty
V nové verzi je možno specifikovat ve VCL různé styly pro jednotlivé vizuální komponenty. Předtím byla možné použít styl pro celou aplikaci.
Jednotlivé vizuální komponenty mají property StyleName, kde se napíše jako text jméno stylu.
Styl musí být v aplikaci zaveden (buďto za běhu nebo třeba jako výchozí styl přes Project Options - je pak zaveden v dpr).
Datum: 2020-06-09 23:37:00 Tagy: Sydney
Embarcadero vydalo verzi Delphi 10.4 Sydney.
Datum: 2020-05-28 20:13:00 Tagy: Sydney
Publikováno se speciálním svolením Embarcadero - beta blogging.
Následující hlavní verze je Delphi 10.4 Sydney.
Marco zveřejnil něco o RTL v 10.4, Delphi RTL 10.4. Kromě věcí jako optimalizace JSON nebo RTTI optimalizace je pro mne důležitá hlavně změna deklarace FreeAndNil.
Pozadí: během refaktorizace kódu často dojde k tomu, že z původní např. třídy se stane rekord nebo interface. Což by ničemu navadilo, ale někdy se zapomene, že FreeAndNil to zkousne, protože jeho deklarace je celkem volná, ale ve výsledku se mohou dít věci.
Datum: 2020-05-25 00:21:00 Tagy: Sydney
V novějších Delphi, nejméně XE3 - hlouběji jsem se nedíval, je v jednotce System.SysUtils definováno pár generických a zaroveň anonymních metod.
// Generic Anonymous method declarations
type
TProc = reference to procedure;
TProc<T> = reference to procedure (Arg1: T);
TProc<T1,T2> = reference to procedure (Arg1: T1; Arg2: T2);
TProc<T1,T2,T3> = reference to procedure (Arg1: T1; Arg2: T2; Arg3: T3);
TProc<T1,T2,T3,T4> = reference to procedure (Arg1: T1; Arg2: T2; Arg3: T3; Arg4: T4);
TFunc<TResult> = reference to function: TResult;
TFunc<T,TResult> = reference to function (Arg1: T): TResult;
TFunc<T1,T2,TResult> = reference to function (Arg1: T1; Arg2: T2): TResult;
TFunc<T1,T2,T3,TResult> = reference to function (Arg1: T1; Arg2: T2; Arg3: T3): TResult;
TFunc<T1,T2,T3,T4,TResult> = reference to function (Arg1: T1; Arg2: T2; Arg3: T3; Arg4: T4): TResult;
TPredicate<T> = reference to function (Arg1: T): Boolean;
Datum: 2020-05-17 21:30:00 Tagy: generics
Publikováno se speciálním svolením Embarcadero - beta blogging.
Následující hlavní verze je Delphi 10.4 Sydney a z toho co jsem vyzkoušel je na co se těšit.
Jak Marco Cantu, tak David Millington (oba produkt manažeři za Rad Studio) již publikovali dvě ze zásadních novinek a to New in Delphi 10.4: Redesigned Code Insight a Custom Managed Records Coming to Delphi 10.4.
Proč se těšit? Prvním důvodem je LSP, který je jádrem změn v Code Insight.
Jak jsem již psal, jedná se o zkratku Language Server Protocol. V podstatě se jedná o největší změnu v IDE za takových 15let (od Delphi 2005, které změnilo IDE).
Datum: 2020-05-12 19:13:00 Tagy: Sydney
Je několik možností jak zrychlit build aplikace (budeme ignorovat nový HW).
Většinou stačí mít dobře stukturovaný projekt bez kruhových referencí, tj. že kompilátor nic nemusí řešit a jde od základních unit směrem k složitějším. Samozřejmě IDEFixPack hlavně pro starší verze také pomůže, ale následující už tak známé není.
Pokud máte hodně jader je možné, že se už začne projevovat přehazování scheduleru Windows, což zejména u starších verzí (třeba XE) může způsobit už trošku zpomalení.
Zkuste ve správci úloh omezit počet procesorů (osvědčilo se mi na 2 kousky) - nebojte se, platí to jen pro aktuálně spuštěný program, Windows si to nezapamatují.
Tímto způsobem jsem zrychlil kompilaci 1.2MLOC z cca 28s na 19s, což není špatné.
Pokud to zafunguje a má to přínos, máte několik možností (kromě na to zapomenout):
V důsledku nefunguje jen rychleji kompilace, ale i třeba napovídání atd. což do brzké (doufám že v další verzi) doby než bude napovídání kódu řešeno přes language server taky potěší.
Více...Datum: 2020-03-17 22:18:00 Tagy: delphi
Na fóru Karel Horký sdílel pěkný tip řešící občasný problém s mizením modálního okna za hlavní formulář (např. při různých přepínání - nemyslím TForm.PopupMode) často ve Windows 10.
procedure DisableProcessWindowsGhosting;
var
DisableProcessWindowsGhostingProc: procedure;
begin
DisableProcessWindowsGhostingProc := GetProcAddress(
GetModuleHandle('user32.dll'),
'DisableProcessWindowsGhosting');
if Assigned(DisableProcessWindowsGhostingProc) then begin
DisableProcessWindowsGhostingProc;
end;
end;
Karel Horký k tomu píše: Volá se to z Create hlavního okna aplikace.
Celé vlákno: forum.delphi.cz/index.php/topic,16907.msg107189.html#msg107189
Více...Datum: 2020-03-01 21:34:00 Tagy: VCL
Už dříve jsem psal o TThread.Queue, ale možná jsem nezdůraznil, že v případě volání z hlavního vlákna je takový kód proveden okamžitě, tj. bez volání synchronize, což třeba nejen u Android aplikací může být požadováno.
Pro takový případ je k dispozici TThread.ForceQueue který zaručí, že i v případě volání z hlavního vlákna je takový kód prováděn se synchronizací.
Zkuste si novou aplikaci a na tlačítko Button1.OnClick dejte
procedure TForm6.Button1Click(Sender: TObject);
begin
TThread.ForceQueue(nil,
procedure
begin
Button1.Caption := 'hello'; // break point 1
//Button1.Repaint;
end
);
end;// break point 2
A nyní program otestujte. Měl by se nejdříve zastavit na break point 2 a pak až na break point 1. Pokud ForceQueue nahradíte za Queue, tak se pořadí zastavení prohodí.
Více...Datum: 2019-12-30 20:53:00 Tagy: paralel
Sem tam se stane, že je třeba nahradit komponentu za nějakou jinou, např. TEdit za TMemo. Samozřejmě je možno vložit novou komponentu, napasovat pozici, upravit TabOrder, přepojit události atd.
Nebo zobrazit formulář jako text (přes popup menu View as text)
object Edit1: TEdit
Left = 192
Top = 64
Width = 121
Height = 21
TabOrder = 1
Text = 'Edit1'
end
Přepsat TEdit na TMemo, přepnout se zpět a IDE zahlásí které property neexistují. Následně při změně pas souboru a jeho uložení IDE zahlásí
Field Form2.Edit1 should be of type Vcl.StdCtrls.TMemo
but is declared as TEdit. Correct the declaration?
a při Yes se deklarace upraví.
Více...Datum: 2019-12-11 22:29:00 Tagy:
Rozhodl jsem se, že zkusím nějakou sérii malých článků o drobnostech. První bude spíše částečně nedokumentované chování.
System.Copy
function Copy(S: <string or dynamic array>; Index: Integer; Count: Integer): string;
z helpu:
"When S is a dynamic array, you can omit the Index and Count
parameters and Copy copies the entire array."
takže
var
s: string;
s2: string;
begin
s := 'Hello cool';
s2 := Copy(s, 3); // <<<<<<<<<< jen 2 parametry
ShowMessage(s2);
v assembleru Win32
Unit1.pas.32: s2 := Copy(s, 3);
lea eax,[ebp-$0c]
push eax
mov ecx,$7fffffff <<<< MaxInt
mov edx,$00000003
mov eax,[ebp-$08]
call @UStrCopy
Jako poslední parametr je předán interně MaxInt a Copy vždy kontroluje zda délka odpovídá (můžete si ušetřit počítání zbývajících znaků - v helpu je popsáno, že se kontrola provede, aspoň se neseknete o 1).
Více...Datum: 2019-12-04 18:24:00 Tagy:
Dne 21.11.2019 Embarcadero vydalo Delphi 10.3.3, tj. třetí release Rio.
Hlavní novinky jsou:
Android 64bit stále používá ARC memory model a přidává podporu Android App Bundle. Podpora celé RTL (vlákna atd) je samozřejmostí. Rozsáhlý článek od PM RAD Studio 10.3.3. Features, DocWiki: docwiki.embarcadero.com/RADStudio/Rio/en/10.3_Rio_-_Release_3, opravené chyby: New_features_and_customer_reported_issues_fixed_in_RAD_Studio_10.3.3.
Download: cc.embarcadero.com/reg/delphi
Více...Datum: 2019-11-21 21:12:00 Tagy: delphi, aktualizace
Zdá se mi to neuvěřitelné, ale už je to 10 let co jsem založil server delphi.cz. Moc děkuji všem lidem co jsem během těch let potkal za podporu a ze všech těch lidí speciální dík pro Richarda Kubáta z EMBT, protože bez jeho důvěry by tehdy server nevznikl.
Díky a jedeme dál.
R.
Více...Datum: 2019-10-28 17:09:00 Tagy:
Ačkoliv REST je momentálně na vrcholu popularity, sem tam je potřeba i SOAP.
Delphi podporuje SOAP od cca Delphi 5 (tj. rok 2000). Bohužel vždy podporoval jen RPC/encoded variantu, což se někdy jeví jako problém, zvláště pokud máte komunikovat se systémem, který podporuje SOAP pouze ve variantě Document/literal. Ukázka rozdílů Literal vs. Encoded, RPC- vs. Document.
Jediná rozumná implementace SOAP co znám pro variantu Document/literal (ale podporuje i RPC) pro Delphi je IndySOAP. Jedná se o open source knihovnu, dostupnou na IndySOAP, přičemž verze z SVN je unicode kompatibilní.
Každá firma má svůj příběh. Ty z IT oboru často začínají tím, jak dva kamarádi pracují na něčem, co tu ještě nebylo. Nejlépe v garáži. Dvojice přátel stála také u zrodu ABRA Software. Jeden programoval, druhý organizoval. Jen ne v suterénu, ale na půdě. Své role si ponechali dodnes, pouze s rozdílem, že za 29 let na trhu se firma rozrostla o dalších 150 lidí, kteří v Čechách, na Slovensku a ve Švýcarsku pomáhají vyvíjet software pro celý svět.
A co to má společného s Delphi? Vývoj robustního informačního systému, který organizuje procesy celé firmy a zvládá účetní operace, správu skladů, řízení výroby i aktualizaci nových zákonů. Delphi jako vývojové prostředí po letech útlumu zase ožívá a má budoucnost. Držíme krok a Delphi pravidelně aktualizujeme na nejnovější verzi.
Informační systém píšeme jako třívrstvou aplikaci. Produkt skládáme z větší části z našich vlastních vizuálních i nevizuálních komponent, což usnadňuje vývojářům práci a zvyšuje přehlednost. Kód průběžně refaktorujeme. Aplikace také podporuje běh na monitorech s vysokým rozlišením.
V produktu máme vlastní skriptovací jazyk a moderní REST API rozhraní. Informační systém podporuje tři databázové servery, přičemž používáme vlastní framework, který při většině práce koncového vývojáře odstíní od specifik konkrétní databáze. V rámci vývoje píšeme testy – unit, integrační, performance a jiné.
A jak se u nás pracuje? Nestane se, že by něco vázlo. Kdo neví, ten se zeptá, a kdo může, pomůže. Bez ohledu na pozici. Bonusem je fitness stezka prospívající ajťáckým zádům a letní stolování na terase. Když si přivstanete, zacvičíte si nebo vyrazíte na společný běh. Poctivá zmrzlina u stánku ve firemním baru hned chutná o něco lépe.
Dostali jste chuť být součástí ABRA týmu? Potřebujeme zkušeného Delphi Developera, který je odvážný a spolu s hlavním architektem, dalšími programátory a testery posune jádro ERP systému ABRA Gen zase o kus dál. Chopte se příležitosti pracovat s třívrstvou architekturou a nástroji automatizace a optimalizujte jejich výkon. U nás uplatníte svoje rozsáhlé zkušenosti.
V nejbližších dnech pořádáme Prague Delphi Meetup. Jste srdečně zváni, více informací a registrace na: https://bit.ly/2kOCvON
Více...Datum: 2019-09-25 21:49:00 Tagy:
Během týdne vyšel druhý update pro Delphi Rio (10.3.2). Je to významný update nejen z hlediska platforem, kdy přináší macOS 64-bit a C++17 pro Windows 64-bit, ale i vzhledem k různým opravám.
Pro mne jsou důležité opravy ohledně IDE a jeho stability, ale z hlediska budoucnosti je nejdůležitější C++ LSP vylepšení (tj. to co jsem psal co se chystá pro Delphi - out of process napovídání a doplňování kódu). Dále např. Tools > Options > IDE > Compiling and Running > Enable unit directory cache, zrychlující přístup k souborům ve velkých projektech.
Přes GetIt je pro Enterprise+ dostupný FMXLinux.
docwiki, opravené chyby a nové věci
Na závěr: moje osobní třešnička - vylepšený TStrings Visualizer - dá se kopírovat text!
Více...Datum: 2019-07-22 23:02:00 Tagy: Rio
Embarcadero oznámilo dohodu s Eugene Kryukov, což je originální autor FMX o licencování FMX pro Linux. Nejedná se o jednorázovou akci, ale o dlouhodobou spolupráci.
FMXLinux je dostupný jako GetIt download pro verzi 10.3.1 Delphi.
Originální oznámení Announcing FmxLinux Bundling with Delphi and RAD Studio
Více...Datum: 2019-07-01 21:38:00 Tagy: linux, FireMonkey
Embarcadero zveřejnilo plány dalšího vývoje Delphi včetně komentáře jednotlivých produkt managerů.
Roadmap RAD Studio Roadmap May 2019, dále komentáře produkt managerů.
Datum: 2019-06-05 23:51:00 Tagy: LSP
Technická konference pro potenciální i stávající uživatele vývojových nástrojů Embarcadero RAD Studio, Delphi a C++Builder.
Svět se mění čím dál tím rychleji a pro oblast informačních technologií to platí dvojnásob. Internet věcí přestává být synonymem pro "hračky" a různé "podivnosti" a stále častěji nachází uplatnění ve vědě, průmyslu a dalších odvětvích. Stejně tak se stalo běžnou realitou využívání cloudových služeb. Uživatelé očekávají od nových aplikací propojitelnost s existujícími systémy, webový přístup a podporu mobilních zařízení. Větší důraz je také kladen na jejich vzhled, ergonomii a kvalitu. Profesionální design a důkladné testování již není konkurenční výhoda, ale nezbytnost. Jedná se o nové výzvy, ale především úplně nové příležitosti pro programátory a vývojáře. Přijďte se podívat, jak Vám mohou pomoci vývojové nástroje společností Embarcadero a Ranorex.
Přednášky budou probíhat v angličtině, pro zájemce však bude k dispozici simultánní překlad do slovenštiny.
Nutná je registrace na seminář (zdarma)
Více...Datum: 2019-05-13 22:37:00 Tagy:
Už od verze 2007 Delphi podporuje procházení přes for - in, bohužel některé třídy stále tuto podporu nemají.
Požadovaný stav:
var
bmk: TBookmark;
begin
for bmk in DBGrid1.SelectedRows do
begin
//xxx
end;
end;
Datum: 2019-03-26 21:14:00 Tagy: db
V Delphi Rio byla přidána podpora pro VCL multi resolution imagelisty.
V podstatě se jedná o dvě spolupracující komponenty:
Datum: 2019-02-28 11:57:00 Tagy: vcl
U příležitosti 24. výročí uvedení Delphi na trh byl vydán 1.update pro Delphi 10.3 Rio.
Ve zkratce co mne zaujalo:
Oprava některých chyb ohledně IDE a mnoha dalších - celý seznam
Více...Datum: 2019-02-19 21:58:00 Tagy: SOAP,
Sem tam mne Delphi překvapí. Nepřijde vám ta syntaxe u PrintOut trochu zajímavá? Delphi prý to podporují od verze 2. Myslím, že na pořadí ani nezáleží.
if (OpenDialog1.Execute) then
begin
WinWord := CreateOleObject('Word.Application');
if (not (VarIsEmpty(WinWord))) then
begin
try
WinWord.Visible := false;
Docs := WinWord.Documents;
Doc := Docs.Open(OpenDialog1.FileName);
vFrom := 1;
vTo := 2;
Doc.PrintOut(Background := false, Append := false, Range := wdPrintFromTo, OutputFileName := EmptyParam, From := vFrom, To := vTo);
// err
finally
WinWord.Quit;
end;
end;
Jen pro připomenutí - PrintOut má mnoho parametrů - word.document.printout
Více...Datum: 2019-01-21 23:14:00 Tagy:
S verzi Delphi 10.3 Rio dochází k podpoře Windows 10 “Per Monitor v2”. Nové API řeší problém, kdy dříve nebylo možné získat informace o velikosti elementů pro různé monitory (jako třeba scrollbary), ale šlo to pouze pro primární monitor.
Co to znamená pro kompatibilitu?
Datum: 2019-01-07 23:08:00 Tagy: Rio
Méně známou vlastností FireDAC je, že obsahuje přímo podporu pro Connection Pool.
Co je Connection pool? Connection pool je třída obsahujicí kolekci otevřených připojeni. V případě vícevláknových aplikací (tj. např. všechny ty REST servery nebo cokoliv kde obsluhuje více požadavků zároveň, případně i normální aplikace, kde používáte více dynamických connection) většinou potřebují přístup do databáze.
FireDAC je threadsafe (tj. bezpečné použítí ve vláknu) jen v případě, že vlákno má vlastní Connection (to je normální požadavek napříč jazyky nebo platformami). Přičemž největší režie je právě vytvoření připojení do DB. Proto se používá mechanismus ConnectionPool, kdy už nepoužívané Connection objekty jsou po nějakou dobu k dispozici a další požadavek na novou connection bude uspokojen některou z těchto Connection.
Nebojte se, FireDAC to má elegantně vyřešeno.
Datum: 2018-12-16 09:57:00 Tagy: FireDAC
Minulý týden jsem narazil na problém kdy testovací oddělení začalo hlásit problémy při běhu programu na kterém spolupracuji pod Ranorexem.
Odbočka: Ranorex nedávno získala IDERA, tj. vlastník Embarcadero. Tím rozšířila své portfolio pro vývoj aplikací o další zářez, kompletní seznam je na ideracorp.com a obsahuje kromě Embarcadero další akvizice z nedávné doby jako Sencha, Whole Tomato, Test Rail atd. přičemž některé produkty jsou nyní přibalovány k vyšším edicím Delphi. Mimochodem když se podíváte na ideracorp.com/news, uvidíte, že všechny akvizice jsou až po získání Delphi - celkem velké investice do rozšíření portfolia a celkem ve svižném tempu.
Ale zpět k našemu problému s Ranorexem.
Datum: 2018-12-05 20:58:00 Tagy: praxe
Dnešním dnem je dostupná nová hlavní verze Delphi 10.3 Rio.
Jak již jsem avizoval v minulém článku, jedná se verzi s nejvýraznějšími změnami v kompilátoru za dlouhou dobu.
Feature matrix: rad-studio-feature-matrix.pdf, DocWiki, What's_New
Dne 28.11.2018 od 9:00 hodin proběhne seznámení s RAD Studio 10.3 Rio a produkty Sencha (ExtJS).
Místo: Městská knihovna v Praze, Mariánské náměstí 1/98, Praha 1, ČR
1) Nová verze Embarcadero RAD Studio 10.3 Rio (Delphi a C++Builder). Přednáší Marco Cantù.
2) Rychlejší vývoj podnikových webových aplikací v jazyce JavaScript s nástroji Sencha (ExtJS 6.6).
Nově je knihovna ExtJS (např. ji používá UniGUI) k dispozici i ve volně dostupné variantě Community Edition.
Místo konání: velký sál Městské knihovny v Praze, Mariánské náměstí 1/98, Praha 1, Česká republika Datum: středa 28.11.2018, začátek prezentace v 9:00 hodin, registrace začne v 8:15 hodin.
Registrace a detaily : embt.cz/nase-novinky/konference-11-2018
Více...Datum: 2018-11-19 12:09:00 Tagy: