Delphi.cz

Český portál Delphi

Náhodné výkřiky 48

Dneska to budou spíše takové triky.

Zmenšení velikosti zálohy instalačních souborů

Instalátor Delphi je napsán v Install Aware, který bohužel ještě z různých důvodů (asi politických) spolupracuje s Microsoftim MSI. Nejen, že MSI je totální neefektivní (např. při reinstalaci otevírá prý každý soubor 4x - proto taky Delphi dělají unistall a nový install), ale ještě se ukládají informace pro reinstalaci do c:\ProgramData (to jde nějak změnit parametrem).

Komprese 1

Problémem je, že v době SSD disků a VMWare jsou disky C malé a takové XE7 tak napráská 10GB dat, které se už moc nepoužijí. Bohužel do doby než se vykopne MSI s tím moc neuděláme.

Samozřejmě nejjednodušší je tyto data smazat, ale to není ideální. Naštěstí Windows umožňují jednoduše některé adresáře komprimovat a v tomto případě je to momentálně nejlepší řešení.

Komprese 2

Kompresí jsem to stáhl na polovinu - viz. první screenshot.

Doplnění metody dle interface

Přiznám se, že jsem dlouho toto hledal, přitom to Delphi umějí prý věky.

Mějme

type
  ITest = interface
    procedure TestA;
    procedure TestB;
  end;

  TTest = class(ITest)

  public

  end;

Vždycky jsem jak idiot kopíroval metody dle interface, což v případě nějakých externích rozhraní je pracné. Přitom se stačí postavit mezi public a end a stisknout CTRL + Space.

Interface

Dvakrát trik při obsluze klávesnice

a) jak jednoduše otestovat, že není stisknut např. ALT ani CTRL v onKeyxxx:

 if (Shift * [ssCtrl, ssAlt] = []) then

V tomto případě se provádí průnik množin s testem na prázdnou množinu.

b) Jak v OnKeyPress otestovat, zda je klávesa stisknuta s CTRL?

procedure TForm1.Memo1KeyPress(Sender: TObject; var Key: Char);
begin
  if Key = ^A then
  begin
    (Sender as TMemo).SelectAll;
    Key := #0;
  end;
end;

V tomto případě (který by se dal napsat i jinak) jsem schválně využil ^, což je málo dokumentovaný operátor (funguje to od dob TP, včetně FPC), kdy např. ^A znamená ASCII kód CTRL+A.

No a uvedený příklad přidává podporu CTRL+A pro Memo (výchozí windows memo CTRL+A nepodporuje).

Oba příklady používají konstrukce, které se dají použít samozřejmě i jinde.

Jak zakázat IDE balíčky

To jsem taky nevěděl (tu druhou část). Pokud otevřete v registru

[HKEY_CURRENT_USER\Software\Embarcadero\BDS\15.0\Known IDE Packages]

je tam seznam IDE rozšíření. Pokud u libovolného změníte data sekci tak, že bude začínat jedním nebo dvěma _ (např. na "__Start Page IDE Package"), zakážete inkriminovaný balíček.

Jedno podržítko = zakázáno uživatelem, dvě = zakázáno systémem.

Platnost od doby cca D2006.

Snad Vám něco z toho bude k užitku.

Datum: 2015-03-09 21:29:00 Tagy: vykriky, praxe

Praxe