vložil Radek Červinka
11. května 2023 20:48
Vždycky jsem UDP psal pomocí Synapse, ale chtěl jsem zkusit něco nového a chtěl jsem to pro Android za pomoci inhouse řešení - i když je Synapse pro Android je dostupná.
Server byl existující synapse UDP server (tady je sample public:howto:udpserver) pro windows, který na zaslaný řetezec <ident> vrátil název počítače, takže jsem během chvilky dostal seznam dostupných stanic i s IP adresou pro připojení z Androidího klienta.
Více...
vložil Radek Červinka
7. prosince 2022 19:17
TListView ve FMX má celkem zajímavé možnosti, které nejsou na první pohled dostupné a některé si ukážeme.

Více...
vložil Radek Červinka
5. července 2022 13:15
Delphi od určité verze (Delphi XE2?) podporuje nastavení verze pro každý TARGET samostatně. Chápu, že to může mít někdy přínosné, ale osobně s tím bojuji, koncept All platforms mi moc nefunguje a spíše mne to otravuje. Takže jsem začal hledat nějaké řešení a výsledkem je používání DDevExtension, které napsal autor FixPacku a které nedávno uvolnil jako open source a psal jsem o tom i zde na serveru.

Více...
vložil Radek Červinka
27. června 2022 23:58
Dlouho jsem nepsal o nějaké fintě pro ladění, tak jsem si vzpomněl na takové dvě drobnosti:
Zobrazení dat z memory stream
Samozřejmě se nejedná jen o memory stream jelikož se jedná o populární bázovou třídu tak to použijeme častěji. Pokud jste v místě, kde máte parametr TStream, není nic jednoduššího než přes volání .ClassName zjistit zda se jedná o potomka TMemoryStreamu, objekt přetypovat a použít následující trik (napadl mne, když jsem ladil volání SOAP a pořád jsem logoval stream do souboru abych ho zkontroloval).
Více...
vložil Radek Červinka
30. března 2022 08:48
Pokud potřebujete používat SOAP, tj. web services, má Delphi léta pro to podporu přes THTTPRIO. Od verze 10.3 RIO je jako komunikační vrstva použit THTTPClient, což je ve většině případů optimální řešení, protože používá preferované řešení operačního systému (např. na Windows SChannel).
Ale: mohou nastat případy, kdy dané řešení nevyhovuje, a pak je tu možnost relativně jednoduše nahradit komunikaci za vlastní (v mém případě to bylo nutnost rychlé změny self signed klientských certifikátů na různých OS). Zvolil jsem synapse. Takže jdeme na to, není to nic hrozného.
Více...
vložil Radek Červinka
13. srpna 2020 16:21
Už je to nějakou dobu, co jsem psal o FastMM4 naposledy a mezitím se něco změnilo. Vývoj FastMM4 byl nahrazen za FastMM5 s možnou komerční licencí a objevil se fork FastMM4-AVX. Fork mají na svědomí autoři známého emailového klienta Bat!, což není špatná vizitka.
Více...
vložil Radek Červinka
26. března 2019 22:14
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;
Více...
vložil Radek Červinka
22. ledna 2019 00:14
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
0796f7bc-4760-4f9e-8c8a-4df17940fdf9|10|5.0
Tagy:
Praxe
vložil Radek Červinka
16. prosince 2018 10:57
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.
Více...
e0683d1f-8ed9-4781-a984-4e0373238259|7|5.0
Tagy: FireDAC
Praxe
vložil Radek Červinka
5. prosince 2018 21:58
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.
Více...
5f14dfd7-9ce3-4ddb-9f0b-7eab88dfe98a|7|3.7
Tagy: praxe
Praxe
vložil Radek Červinka
18. září 2018 22:34
Od Windows XP SP2, resp. Windows Server 2003 operační systém windows obsahuje driver jádra pro obsluhu http požadavků s názvem http.sys. Ve skutečnosti se jedná o plný HTTP server a to přímo v jádře - což mimochodem znamená, že je na nižší úrovni než třeba IIS nebo Apache a bez veškerých závislostí.
Webbroker nabízí několik možností jak překládat výsledné aplikace (např. jako standalone web server), ale http.sys je prostě jiná liga. To si uvědomují i tvůrci komponent, jako např. TMS Sparkle - což je základem jejich nového Delphi web frameworku (pas to JS compiler) WebCore, nebo Intraweb.
A samozřejmě Open Source implementace - Synopse http.sys.
Více...
vložil Radek Červinka
2. července 2018 23:18
Minule jsem psal o MMX code explorer a jeho uvolnění volně ke stažení a tak jsem si řekl, že ho taky zkusím - třeba tam opravdu bude (někdo to naznačoval).
Často píši kód způsobem, že napíši nějakou část a v rámci ní dám volání metod, které následně vytvořím (programování shora dolů). Vždy mi ale chyběla funkce, která by mi ty metodu vygenerovala s korektními parametry.
Více...
vložil Radek Červinka
2. dubna 2018 00:19
Nedávno jsem narazil na prima háček jak udělat v určitých případech víceřádkové ListView položky bez vlastního kreslení.

Ač zastánce VirtualTreeView, sem tam se hodí ListView v report módu a víceřádkový text s fixní výškou.
Více...
28552277-7be9-4d9c-aa4c-3e47ce3f4d17|3|5.0
Tagy: VCL
Praxe
vložil Radek Červinka
6. března 2018 00:36
Jak se tak potuluji po zákaznících se školením nebo konzultacemi, tak narážím na opakovanou situaci s FieldByName (případně podobnými funkcemi).
Více...
vložil Radek Červinka
4. listopadu 2017 22:41
Je mi jasné, že jsem o tom již kdysi psal, ale opakovaně na školeních, které provádím, narážím na tuto vlastnost IDE, která je pro mnohé překvapením: jednoduchá změna pozice aktuálního řádku provádění kódu. Nejedná se o žádnou novinku, ale o věc cca z verze Delphi 2010.
Aktuální pozice je ukázána šipkou, viz obrázek.

Více...
67228cac-5845-41fc-9143-b4a7c01f85a4|9|4.6
Tagy: ladeni
Praxe