dinsdag 8 maart 2011
Denomo: GDI handle leak check for Delphi
vrijdag 5 maart 2010
DxScene = WPF for Delphi
Een van de mooie onderdelen van .Net is WPF: hardware accelerated vector graphics. Ik zat eens te denken of zoiets ook niet mogelijk was voor Delphi. Er bestaat namelijk een open source project genaamd "GlScene": een 3D library voor OpenGL. Deze heeft echter beperkte (?) ondersteuning voor een normale GUI. Via via kwam ik bij "DxScene": deze heeft wel een uitgebreide set aan GUI controls! Hiermee kun je net als WPF mooie GUI's maken.
- VxScene: een library voor 2D vector graphics, voor normale GUI's
- DxScene: voor 3D graphics en models
- Skin en Theme manager
Het mooie is dat je deze eenvoudig kunt combineren. Zo kun je VxScene binnen DxScene gebruiken, bijvoorbeeld een 3d cubus met aan elke kant een invoerveld en een knop etc. Maar ook allerlei 3d effecten zijn mogelijk (transparancy, mirroring, particles(zoals vuur!), glow, etc). Een "cover flow" is bijvoorbeeld eenvoudig te maken:
Hardware accalerated vector graphics
Nog een mooi voorbeeld is deze applicatie die ermee gemaakt is: 3D Image Commander
Design time editor
In tegenstelling tot WPF kun je eenvoudig designtime WYSIWYG de GUI samenstellen. Niet zo RAD als je normaal met Delphi gewend bent, maar je hoeft in ieder geval niet zelf een XAML samen te stellen of via een externe tool als expression blend
Data Binding
Net als WPF kent het ook data binding: je kunt bijvoorbeeld de X-as rotatie koppelen aan een animatie component (lineair of een "path")
3d import
Omdat 3d objecten snel complex kunnen worden, is het handig om te weten dat je allerlei 3d formaten kunt importen: 3d studio max (.3ds), Half-life, Quake en Doom 3 models, maar ook SVG en en WPF Mesh models. Zie hier een demo exe.
Newton: physics engine
Nog leuker wordt het als je het combineert met een "physics engine", oftewel natuurkundige berekening! Een leuke demo hiervoor is de klassieker "Breakout" in 3d met bots berekeningen (demo exe):
Multi platform, OpenGl
Zoals de naam al doet vermoeden, gebruikt DxScene op Windows DirectX. Maar het is echter ook multi platform: je kunt met FPC ook native Linux en MacOS X executables maken! Het kan dus ook overweg met OpenGl. Daarnaast kun je ook voor softwarematige versnelling kiezen, maar dit is uiteraard wel CPU intensief en trager.
Commercieel
Enige nadeel is dat het commercieel is, al is 100 euro niet duur voor zoiets moois.
Links
- Een overzicht van allerlei screenshots
- Alle demo's downloaden in 1 zip
- download pagina (oa trial)
Conclusie
Het is natuurlijk niet hetzelfde als WPF, maar je kunt er wel erg mooie dingen mee maken, die ook nog eens cross-platform zijn! En je hebt alles in 1 exe zitten: geen .Net 3.5 installatie oid nodig :-)
vrijdag 11 december 2009
"External exception C0000006" bij app op WLAN
Als je een applicatie maakt dat moet draaien via een WLAN (Wifi), pas dan even op en lees het onderstaande door:
{$SetPEFlags IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP}
woensdag 9 december 2009
Windows tijd: in stapjes van 15ms!
Soms wordt je onaangenaam verrast: je meet de tijd van alle SQL queries in je programma met "MillisecondsBetween" en je krijgt als resultaat: 0, 0, 0, en 15ms...
Thread time slices
Consequenties
De default time slice van 15ms heeft nogal wat consequenties voor het programmeren: zo gaat een "Sleep(1)" niet 1ms wachten, maar 10 - 15ms! (afhankelijk van andere threads etc). Maar ook andere tijd functies zoals "GetTickCount", "Now" (Delphi) of "GetLocalTime" (Windows) werken in stapjes van 15ms!
- hardware timer gebruiken: met QueryPerformanceFrequency + QueryPerformanceCounter kun je met micro en nano secondes werken!
- kortere "time slice" instellen met "timeBeginPeriod", bijv een time slice van 1ms met "timeBeginPeriod(1)". Dit heeft echter wel nadelen: veel meer context switches, dus meer overhead!
OldNow := KOLDetours.InterceptCreate(@Now, @NowExact);
vrijdag 23 oktober 2009
Gratis internetbellen!
maandag 7 september 2009
Delphi 2010, Coderage + SDN
Delphi 2010 released!
Vlak na de preview van Delphi 2010 (zie mijn vorige post), verscheen al de RTM versie en is het officieel released. Ondertussen zijn er verschillende interessante blogs verschenen, waarbij verschillende verbeteringen verder uitgelegd worden. Ik zal niet alle verbeteringen bespreken, maar een paar uitlichten. (P.S: zie ook de complete "reviewers" guide!)
Uitgebreide online wiki help (!)
Na de Delphi Prism Wiki is de hele RAD Studio via een mooie online wiki te doorzoeken. Bijvoorbeeld voor het complete overzicht van alle verbeteringen in de 2010 versie:
Voor een handig beginpunt:
Maar ook de complete Delphi Language Guide is beschikbaar, evenals bijvoorbeeld de VCL, etc.
Class constructors
Een mooie uitbreiding (wat nog niet zo nadrukkelijk genoemd is), is de ondersteuning van Class Constructors (net als .Net)
Een voorbeeld hoe je het kunt gebruiken:
RTTI (a la .Net reflection)
Verder is de RTTI sterk verbeterd, meer object georiënteerd zoals .Net Reflection werkt, zonder allerlei pointers, records, etc.
Class attributes
Zoals je ziet, zijn in D2010 verschillende .Net technieken verwerkt. Nu heeft Delphi ook ondersteuning voor class attributes:
TStopwatch
Nog een kleine maar handige uitbreiding is de TStopwacht, voor het meten van tijden (hoe lang een stuk code duurt etc):
Andere handigheidjes:
Datasnap (multitier):
- Datasnap (voor Multitier architecturen) is sterk verbeterd:
- Datasnap met JSon types
IDE & Source Code:
DBX: Firebird + alle sourcecode (!)
Wat ik zelf erg mooi vind, is de native ondersteuning van de open source database Firebird (compatible (?) met Interbase). Maar ook dat de broncode van alle drivers meegeleverd wordt! Niet alleen van DBX, maar ook (eindelijk!) van Midas.dll (oa bekend van TClientdataset).
Extra's
De eerste extra functies en fixes van "andy" zijn al verschenen voor D2010:
TPL (Task Parallel Library) voor Delphi (!)
Laatst is er een interessante dotNed meeting geweest bij DTS/4DotNet over TPL voor .Net. Gelukkig bestaat voor Delphi zoiets dergelijks al een poosje:
- AsyncCalls (eenvoudig maar goed)
- OmniThreadLibrary (advanced: uitgebreider maar iets lastiger)
CodeRage 4 & SDN Conference
- Volgende week start de gratis online CodeRage 4 Virtual Developer’s Conference, met veel (!) interresante sessies.
- Ook interresant wordt de volgende SDN Conference dit jaar. Met veel Delphi sessies (volgens mij zijn een aantal dezelfde als bij CodeRage 4 :-) ).
dinsdag 18 augustus 2009
Delphi 2010 Preview!
Op de site van Codegear/Embarcadero is vorige week de Delphi 2010 Preview Center verschenen: Nog 7 dagen, 2 uur, 31 minuten (and counting…) en dan is het zover.
Delphi 2010 belooft de beste Delphi release ooit te worden, met veelbelovende nieuwe features en verbeteringen! Zoals (Multi)Touch, Mouse Gestures, IDE Insight (alles (!) vinden in 1 scherm), background compilation, verbeterde debugger (oa threads), verbeterde RTTI (.Net Reflection!), class attributes, Direct2d canvas (Win7), etc etc.
Bekijk onder andere deze video eens:
Vervolgens zijn er op de Codegear blog een groot aantal artikelen hierover verschenen:
- RAD Studio 2010 – The IDE
- IDE Insight (!)
- (Multi)Touch & Mouse Gestures (!):
- Thread-specific breakpoints
- Background Compilation in Delphi 2010 and C++Builder 2010
- Refactoring & Help Insight for Generics
- Verbeterde Actions
- IDE Features: File|Reopen
- IDE Features: “Old School” Tool Palette
- How to configure Delphi 2010 to look, work, and feel like Delphi 7
- Delphi 2010 – New Units
- Search: highlighting & searchbar
Niet minder interessant zijn de blog artikelen van de “Wings of wind” blog!:
- Inleiding, Delphi 2010: kwaliteit & snelheid!
- New/old component toolbar
- Debug visualizers
- Project management enhancements
- Vcl natural input overview
- Vcl & Language enhancements for touch and gestures
- Alpha transparancy & Direct2d canvas (Windows 7)
- Attributes & the new RTTI (!)
Een ander blog had een leuk artikel over een andere (kleine) verbetering mbt API wrappers:
1 ding is zeker: ze zijn bij Codegear/Embarcadero druk bezig met Delphi! De toekomst zag met al het .Net geweld er somber uit, maar de zon schijnt achter de wolken. Wat betreft “native code” versus “managed/.Net code” vond ik de volgende gedeelte van de blog van Pawel Glowacki wel mooi:
Tim Anderson in his post “Native code makes a comeback – except it never away” has some good points on this subject as well. The very good example why native code continues to be important is new Windows 7 Direct2D graphics. I like the quote from MSDN Magazine June 2009 issue “Introducing Direct2D” where author sums it up:
(…) if you want to develop high-performance and high-quality commercial applications, you’ll still look to C++ and native code to deliver that power. (…)
That is why Delphi and C++Builder developers are not looking to move away from native to managed code.
