Zvětšení dostupné paměti 32bit programů v Delphi

vložil Radek Červinka 19. září 2014 23:09

Jednoho krásného dne Váš program zjistí, že trpí nedostatkem paměti. Přirozeným krokem je přechod na 64bit aplikace, ale existuje i jiná možnost. U EXE (resp. PE souboru) se dá specifikovat flag IMAGE_FILE_LARGE_ADDRESS_AWARE. Tento flag byl původně určen pro speciální mód 32bit Windows, kdy místo normálních cca 2GB paměti pro 32bit proces nabízel celých úžasných 3GB volné paměti. Praktická využitelnost tedy nic moc, protože tento mód Windows se moc nepoužíval.

Situace se obrátila s příchodem 64bit Windows (jen aby nedošlo k nedorozumnění - dávejte pozor kdy mluvím o 32bit procesu, kdy o 32bit Windows a kdy o 64bit Windows).

Více...

Tagy: , , , ,

Praxe

XE7 - MultiView

vložil Radek Červinka 18. září 2014 22:59

Kromě zásadního FireUI návrháře přináší XE7 velmi zajímavou komponentu TMultiView. Tato nenápadná komponenta umožňuje zobrazit svůj obsah různým způsobem v závislosti na možnostech zařízení. Primárně je to určeno k zobrazování typu Master - Detail.

V návrhu (se vzhledem pro Android)

Multiview

Více...

Tagy: , ,

XE7 prezentace v Praze

vložil Radek Červinka 17. září 2014 22:30

Rad Studio World tour 2014

Já jsem tam nebyl, ale z důvěrných informací jsem se dozvěděl o cca 130 lidech. Své dojmy a poznatky klidně napište do komentářů, budu rád.

Nemluvilo se tam náhodou i o quality.embarcadero.com?

Tagy: ,

Delphi

XE7 - System.Threading - Task

vložil Radek Červinka 12. září 2014 23:32

V pokračování minulého článku ukáži pravděpodobně nejčastější použití System.Threading - použití TTask, přidání úlohy do poolu. Příklad jsem si vypůjčil z blogu Embarcadera.

implementation
uses
  System.Threading, System.SyncObjs;
{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
 tasks: array of ITask;
 value: Integer;
begin
 Setlength (tasks, 2);
 value := 0;

 tasks[0] := TTask.Create (procedure ()
   begin
     sleep (3000); // 3 seconds
     TInterlocked.Add (value, 3000);
   end);
 tasks[0].Start;

 tasks[1] := TTask.Create (procedure ()
   begin
     sleep (5000); // 5 seconds
     TInterlocked.Add (value, 5000);
   end);
 tasks[1].Start;

 TTask.WaitForAll(tasks);
// TTask.WaitForAny(tasks);
 ShowMessage ('All done: ' + value.ToString);
end;

Více...

Tagy: ,

Novinky v Delphi

XE7 - System.Threading - Future

vložil Radek Červinka 10. září 2014 00:39

XE7 přichází s novou jednotkou přímo v RTL a to System.Threading, která zjednodušuje paralelní programování. Jedná se o multiplatformní věc a mezi jinými umí ThreadPool, který podle zátěže přidává nebo odebírá další vlákna.

Více...

Tagy: , ,

Novinky v Delphi

XE7 - multiplatformní designer - FireUI

vložil Radek Červinka 8. září 2014 22:44

IDE v XE7 příchází s multiplatformním designerem (pod názvem FireUI). Cílem je mít jeden formulář s aplikační logikou, a jen přepínat uspořádání pro jednotlivé platformy, tak jak je na nich zvykem. IDE zaručuje správu resource pro jednotlivé platformy. V předchozích verzích se automaticky přizpůsoboval jen vzhled prvků, většinou nikoliv jejich uspořádání na obrazovce. Nyní tak můžete mít např. pro Android menu nahoře, ale pro iOS 7 menu dole a iOS menu vpravo (příklad!), přičemž je vše součástí jednoho formuláře a preview vzhledu jednoduše přepínáte jedním comboboxem v IDE.

V praxi se vytvoří jeden "master form" a z něj se mohou dále odvozovat ostatní platformy.

FireUI

Více...

Tagy: ,

Novinky v Delphi

XE7 je dostupné - některé novinky

vložil Radek Červinka 2. září 2014 11:02

Tagy:

Delphi | Novinky v Delphi

Náhodné výkřiky 45

vložil Radek Červinka 29. srpna 2014 23:16

Ještě než se budu věnovat XE7, které snad brzo dorazí, je tu další hrst odkazů a tipů.

Více...

Tagy: ,

Akce | Aktualizace | Komponenty | Praxe

System.JSON v Delphi XE6

vložil Radek Červinka 20. srpna 2014 00:51

Od XE6 je součástí RTL Delphi podpora pro JSON. V předchozích verzích to byla součástí DataSnap, ale od XE6 je nově součástí přímo RTL v jednotce System.JSON.

Více...

Tagy: ,

Novinky v Delphi

MS uvolnil update, který zablokuje starší verze Delphi

vložil Radek Červinka 15. srpna 2014 11:30

Podle toho co jsem četl se problem týká nejméně Delphi 2007 až Delphi 2010. IDE načítá externí font, což MS zablokoval. Podle všeho se jedná o KB2982791.

Pokud dostanete "Cannot create file C:\Users\Admin\AppData\Local\Temp\EditorLineEnds.ttr", tak se jedná o tento problém.

Řešení jsou dvě: odinstalovat uvedenou opravu, nebo použít IDEFixPack, který od verze 2.7 obsahuje patch, který zakazuje načítání externích fontů - andy.jgknet.de/blog/2014/08/editorlineends-ttr-idefixpack-users-are-not-affected.

via: stackoverflow

Tagy: , , ,

Praxe

FireDAC IBLite with Delphi XE6

vložil Radek Červinka 30. července 2014 15:02

Jelikož je ohlášeno IBLite i pro Desktop, můžete se připravit (video ukazuje mobilní verzi). IBLite je embedded verze InterBase bez omezení (ale na rozdíl od plné InterBase také nemá silné šifrování).

Pokud nic jiného, tak si aspoň všimněte, kam se pro Deploy dávají data na iOS a kam na Android. Ušetří vám to hodně nervů.

Tagy: ,

Beyond Compare Lite

vložil Radek Červinka 24. července 2014 00:15

Od verze XE je součástí instalace Beyond Compare Lite, najdete ho v adresáři Delphi/bin/BCompareLite.exe . Pokud ho ještě neznáte - dejte mu šanci. Plnou verzi znám jen z doslechu (slučování ze tří zdrojů, synchronizace adresářů…), ale i v lite verzi je pro mne významné plus např. to, že program umí rozeznávat důležité změny (tj. rozdíl mezi změnou v poznámce, příkazu nebo např. v řetězci).

Beyond Compare Lite

Více...

Tagy:

Nástroje

Synchronizace TThread za pomocí anonymních metod

vložil Radek Červinka 21. července 2014 23:32

Před několika verzemi byla metoda TThread.Synchronize rozšířena o několik možností volání, mezi jinými i anonymní metody. Nepřikládal jsem tomu moc význam, ale poslední dobou jsem to viděl v několika projektech a nabývám dojmu, že to má větší možnosti než jsem si myslel.

Více...

Tagy: , ,

Praxe

DisposeOf, ARC, Free, WEAK a další

vložil Radek Červinka 11. července 2014 22:28

Laskavý čtenář mého blogu jistě už naznal, že Delphi neznamená jen Win32 (Win64, OSX) ale i kompilátory pro iOS a Android.

Tyto kompilátory (kromě kompilace do ARM) přinášejí i podporu ARC (Automatic Reference Counting) pro objekty (podobně jako k tomu došlo před nedávnem Apple). Princip není v Delphi v podstatě nový - Delphi odjakživa používají stejný mechanismus nejméně pro řetězce a interface.

V podstatě existují dvě možnosti automatického uvolňování paměti - ARC a Garbage Collector, kdy GC je ten nedeterministický (tj. problematický viz Android a nový runtime ART to taky řeší), ale to sem asi nepatří.

Obecně ale oba modely musí řešit cyklické reference. Takže ARC je moc pěkné, ale není vše tak sluníčkové jak by mohlo vypadat. V nejhorším ale jen nedojde k uvolnění, pokud se tomu chceme vyhnout, je nutno jít trochu hlouběji. Upozorňuji, že právě následující text jde v některých detailech hlouběji než je nutné pro normálního programátora.

Více...

Tagy: , , , , ,

Jazyk | Novinky v Delphi

Náhodné výkřiky 44

vložil Radek Červinka 8. července 2014 00:44

Dnes další dávka odkazů a tipů pro všechny delfíny.

Narazil jsem na stránky delphiarea.com. Obsahují celou řádku komponent, ale mne nejvíce zaujala free komponenta SimpleGraph.

simplegraph

Více...

Tagy: , , ,

FireMonkey | Komponenty | Praxe

Naše nabídka

Partial English version.

MVP
Ing. Radek Červinka - Embarcadero MVP
profil na linkedin, Twitter:@delphicz

Nabízím placené poradenství a konzultace v oblasti programování a vývoje SW.
Dále nabízíme i vývoj speciálního software na zakázku.

Neváhejte nás kontaktovat (i ohledně reklamy nebo burzy práce).

Pokud chcete podpořit tento server libovolnou částkou, můžete použít PayPal. Moc děkuji.

Delphi Certified Developer

O Delphi.cz

Delphi je jediný moderní RAD nástroj podporující tvorbu nativních aplikací pro platformu Win32 a Win64 (a Mac OSX a na iPhone a s výhledem na Android a další platformy díky FireMonkey) na současném trhu (včetně Windows 7).

V současnosti je světová komunita přes dva miliónů vývojářů.

Delphi.cz je nezávislý portál pro uživatele Delphi. Portál není koncipován pro úplné začátečníky, i když i ti se zde nebudou nudit, ale spíše na programátory, kteří již něco znají a chtějí své znalosti dále rozvíjet a sledovat novinky.

Anketa


Poslední komentáře

Comment RSS