5. 12. 2013

 

Smazání souborů staršínch než N dnů Windows dávkou


Windows dávka (.cmd nebo .bat), která maže JPG soubory starší než 30 dnů v cestě C:\Cesta\KdeChiMazat vypadá následovně:
forfiles /P "C:\Cesta\KdeChiMazat" /M *.jpg /D -30 /C "cmd.exe /c del /q @path" 

Pokud chci i v podadresářích C:\Cesta\KdeChiMazat, tak přidám parametr /S.

Příkaz forfiles neumí fungovat nad UNC cestami. Ale dá se to obejít trikem s PUSHD / POPD, který dočasně UNC cestu namapuje na volné písmenko disku (pravděpodobně Z:):
pushd \\Server\Cesta\KdeChciMazat && (
    forfiles /M *.jpg /D -30 /C "cmd.exe /c del /q @path"
) & popd
Pokud si nejsem jist, co bude dávka mazat, tak si mohu soubory jen zobrazit. Nahradím
del /q @path
tímto
echo @path

24. 7. 2013

 

Radiohead: OK Computer


Jejich OK Computer z roku 1997 můžu poslouchat pořád. Vůbec není znát, že už je to 15 let. Podařilo se jim nadčasové dílko. Ještě dnes se mi u No Surprises (nejen!) ježí chlupy.



Radiohead: OK Computer booklet



Tracklist s mým hodnocením:

1. Radiohead - Airbag (4:44)
2. Radiohead - Paranoid Android (6:23)  ★★★★★
3. Radiohead - Subterranean Homesick Alien (4:28)  ★★★★★
4. Radiohead - Exit Music (For A Film) (4:25)  ★★★★★
5. Radiohead - Let Down (4:59)  ★★★★★
6. Radiohead - Karma Police (4:21)  ★★★★★
7. Radiohead - Fitter Happier (1:57)
8. Radiohead - Electioneering (3:50)
9. Radiohead - Climbing up The Walls (4:45)
10. Radiohead - No Surprises (3:48)  ★★★★★
11. Radiohead - Lucky (4:19)  ★★★★★
12. Radiohead - The Tourist (5:23)  ★★★★★

Štítky: ,

4. 9. 2012

 

Delphi XE3

Takže Embarcadero Delphi XE3 je venku. Pokud potřebuji při podmíněné kompilaci poznat tuto verzi, tak takto:

{$IFDEF VER240}
...
{$ENDIF}

Seznam všech verzí:

VER250 → Delphi XE4 / C++Builder XE4 (Win32/Win64/iOS)
VER240 → Delphi XE3 / C++Builder XE3 (Win32/Win64)
VER230 → Delphi XE2 / C++Builder XE2 (Win32/Win64)
VER220 → Delphi XE / C++Builder XE (Win32)
VER210 → Delphi 2010 / C++Builder 2010 (Win32)
VER200 → Delphi 2009 / C++Builder 2009 (Win32)
VER190 → Delphi 2007 for .NET
VER180 or VER185 → Delphi 2007 / C++Builder 2007 for Win32
VER180 → Delphi 2006 / C++Builder 2006 (Win32/.NET) and Delphi/C++Builder 2007 for Win32
VER170 → Delphi 2005 (Win32/.NET)
VER160 → Delphi 8 for .NET
VER150 → Delphi 7
VER140 → Delphi 6 / C++Builder 6
VER130 → Delphi 5 / C++Builder 5
VER125 → C++Builder 4
VER120 → Delphi 4
VER110 → C++Builder 3
VER100 → Delphi 3
VER93 → C++Builder 1
VER90 → Delphi 2
VER80 → Delphi 1

Zdroj: RAD Studio Compiler Versions

Štítky: , ,

7. 4. 2012

 

How to create case insensitive TDictionary<>

Very simple:

uses System.Generics.Collections, System.Generics.Defaults;

var
  Dict: TDictionary‹string, TValue›;
begin
  Dict := TDictionary‹string, TValue›.Create(TIStringComparer.Ordinal); // ‹- this is the trick
  try
  .
  .
  .
  finally
    Dict.Free;
  end;
end;

Indeed you can use TObjectDictionary‹›. Tested in Delphi XE2.

Štítky: , ,

26. 8. 2011

 

Singleton v Delphi

Poslední dobou se dost zajímám o Design patterns a tak člověka napadne, jak by ten který implementoval Delphi. Jako první jsem si vybral singleton (i když o něm někteří říkají, že je to anti-pattern):

unit Singleton; interface type TSingleton = class sealed strict private class var FInstance: TSingleton; public // Global point of access to the unique instance class function Create: TSingleton; destructor Destroy; override; end; implementation { TSingleton } class function TSingleton.Create: TSingleton; begin if FInstance = nil then FInstance := inherited Create as Self; Result := FInstance; end; destructor TSingleton.Destroy; begin FInstance := nil; inherited; end; end.

Štítky: , ,

20. 8. 2011

 

Duck typing v Delphi

Našel jsem ve Wikipedii (pro mě) podivný termín: Duck typing. Tak mě zajímalo co to je a jestli by to šlo implementovat v Delphi. Zde je výsledek:

/// This is example of duck typing in Delphi.
/// Based on: http://en.wikipedia.org/wiki/Duck_typing

program DuckTyping;

{$APPTYPE CONSOLE}

uses ObjComAuto;

{$METHODINFO ON} // important

type
  TDuck = class
  public
    procedure Quack;
    procedure Feathers;
  end;
  TPerson = class
  public
    procedure Quack;
    procedure Feathers;
  end;
procedure TDuck.Quack;
begin
  Writeln('Quaaaaaack!');
end;
procedure TDuck.Feathers;
begin
  Writeln('The duck has white and gray feathers.');
end;

procedure TPerson.Quack;
begin
  Writeln('The person imitates a duck.');
end;
procedure TPerson.Feathers;
begin
  Writeln('The person takes a feather from the ground and shows it.');
end;

procedure InTheForest(V: Variant);
begin
  V.Quack;
  V.Feathers;
end;
procedure Game;
var
  Duck, Person: Variant; // or IDispatch
begin
  Duck := TObjectDispatch.Create(TDuck.Create, True) as IDispatch;
  Person := TObjectDispatch.Create(TPerson.Create, True) as IDispatch;

  InTheForest(Duck);
  InTheForest(Person);
end;

begin
  Game;
end.

Štítky: ,

19. 3. 2009

 

Delphi - klávesové zkratky v IDE

Klávesové zkratky dokáží ušetřit hodně času. Proto není od věci si je čas od času zopakovat:

Ctrl+J - vyvolá Šablony kódu (Code Templates)

Ctrl+T - smaže slovo vpravo od kurzoru

Ctrl+E - zahájí inkrementální vyhledávání v aktuálním dokumentu od kurzoru

Ctrl+Y - smaže aktuální řádek

Ctrl+Shift+G - vloží nově vygenerovaný GUID na místo kurzoru

Ctrl+Shift+I - odsadí vpravo (Indent) označený blok textu

Ctrl+Shift+U - přisadí (Unindent / Outdent) označený blok textu

Ctrl+Shift+Y - smaže text od kurzoru do konce řádky

Ctrl+Shift+J - vyvolá SyncEdit (přiznám se: ač vyvíjím v Delphi dennodenně 11 let, nevím co to je?)

Alt+[ - skočí na počáteční závorku

Alt+] - skočí na ukončovací závorku

Alt+⇒ - vpřed v historii hotlinků (Hotlink history)

Alt+⇐ - zpět v historii hotlinků (Hotlink history)

Alt+⇑ - najdi deklaraci symbolu, na kterém stojí kurzor (vloží hotlink do historie hotlinků)

F4 - spustí program a zastaví na řádce, kde se nachází kurzor (jakýsi dočasný breakpoint)

F5 - zapne / vypne breakpoint na aktuální řádce

F7 - krok "dovnitř" v debuggeru (Debugger step into)

F8 - krok "přes" v debuggeru (Debugger step over)

Ctrl+F9 - zkompiluje projekt

Shift+F9 - zbuilduje projekt

F9 - spustí program se zapnutým debuggerem

Ctrl+Shift+F9 - spustí program bez debuggeru

Ctrl+F12 - zobrazí seznam unit zařazených v projektu (tedy ne všech unit, které se linkují)

Alt+G - zeptá se na číslo řádku, na který má jít

Ctrl+Shift+R - zahájí / ukončí nahrávání makra

Ctrl+Shift+P - přehraje makro

Ctrl+SPACE - vyvolá Dokončování kódu (Code Completion)

Ctrl+Shift+SPACE - vyvolá Nápovědu k parametrům (Code Parameter Hints)

Ctrl+Enter - otevře soubor, na jehož jméně se právě nachází kurzor

Ctrl+Shift+C - vyvolá Dokončování třídy (Class Completion) pro třídu, ve které právě stojí kurzor

Ctrl+Shift+⇑ - přeskakuje mezi deklarací a implementací metody

Ctrl+Shift+⇓ - přeskakuje mezi deklarací a implementací metody

Ctrl+Alt+⇑ - přeskakuje mezi implementacemi jednotlivých metod třídy směrem nahoru

Ctrl+Alt+⇓ - přeskakuje mezi implementacemi jednotlivých metod třídy směrem dolů

Ctrl+Alt+Home - skočí na implementaci první metody v unitě

Ctrl+Alt+End - skočí na implementaci poslední metody v unitě

Ctrl+/ - přepíná zakomentování / odkomentování aktuální řádky nebo označeného textu


Nedokáži přesně zmapovat, ve které verzi Delphi se která zkratka poprvé objevila, ale drtivá většina jich funguje i v Delphi 5 (z roku 1998).

Štítky: ,

This page is powered by Blogger. Isn't yours?

Přihlášení k odběru Příspěvky [Atom]