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í:

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

Š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:

31. 1. 2009

 

Google se zbláznil?

Dnes se Google rozhodl označovat úplně všechny nalezené odkazy textem "Tyto stránky mohou poškodit váš počítač." - viz obrázek:

Štítky:

19. 12. 2008

 

Microsoft vydal Service Pack 3 (SP3) pro SQL Server 2005

http://www.microsoft.com/downloads/details.aspx?FamilyId=ae7387c3-348c-4faa-8ae5-949fdfbe59c4

Build je 9.00.4035.

Jako všechny Service Packy produktů firmy Microsoft je i tento kumulativní, tedy není nutné instalovat nejprve Service Pack 1 nebo Service Pack 2.

Štítky:

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

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