Archive for the ‘Delphi XE2’ Category
Posted by jpluimers on 2014/01/29
In the series “interesting stuff you can do with Implicit operators”: delphi – With a class operator is an implicit typecast to itself allowed? – Stack Overflow.
Be careful though, as Implicit assignment will allow more code paths to the compiler than you expect at first sight (:
–jeroen
Posted in Delphi, Delphi 2007, Delphi 2009, Delphi 2010, Delphi XE, Delphi XE2, Delphi XE3, Delphi XE4, Delphi XE5, Development, Software Development | Leave a Comment »
Posted by jpluimers on 2014/01/10
Ever since around Delphi 2007, it started to use temporary .VRC files to re-build the project .RES file.
It confuses people, and with reason as the only public information about it on the dockwiki seems to be in the Version Info page (though there is more on the other embarcadero sites).
The reason is that parts of the .RES file are no more leading in the process of getting them from your project options to the final binary (EXE/DLL/BPL/…) of your project.
Delphi XE3 for instance can have these resource structures in the .VRC file:
Except for type 24, Delphi XE2 seems to have the same kinds of resource types.
All in all, most if not all of the .RES files are being auto-generated for at least a couple of years now so there is less and less need to put it under version control.
The problem is that if for one reason or the other, your project .RES file becomes readonly, and you get errors like mentioned in Why does a projects res file need to ….
[BRCC32 Error] xxx.vrc(1): error creating xxx.res
.RES in VCS or not?
Read the rest of this entry »
Posted in Conference Topics, Conferences, Delphi, Delphi XE, Delphi XE2, Delphi XE3, Delphi XE4, Delphi XE5, Development, Event, QC, Resource Files and Scripts (.res/.rc), Software Development | Leave a Comment »
Posted by jpluimers on 2013/12/22
Cool stuff: DelphiSpec library, inspired by Cucumber. It runs on top of DUnit.
via DelphiSpec Library Announce « Роман.Янковский.me.
A similar one in the .NET realm: SpecFlow – Pragmatic BDD for .NET.
–jeroen
Posted in .NET, .NET 3.5, .NET 4.0, .NET 4.5, C#, C# 3.0, C# 4.0, C# 5.0, Delphi, Delphi 2005, Delphi 2006, Delphi 2007, Delphi 2009, Delphi 2010, Delphi XE, Delphi XE2, Delphi XE3, Delphi XE4, Delphi XE5, Development, Software Development | Leave a Comment »
Posted by jpluimers on 2013/12/19
Almost a year ago, a thread on “premature Delphi optimization” came by on G+ about this code:
procedure ExchangeInteger(var AValue1, AValue2: Integer);
begin
AValue1 := AValue1 xor AValue2;
AValue2 := AValue1 xor AValue2;
AValue1 := AValue1 xor AValue2;
end;
I don’t think that was premature optimization, just some code from an old fart that had already been programming in the era where processors had reasons to use it:
Back then, the only efficient way to exchange two variables of the same data type was using the XOR swap algorithm.
Nowadays you have more options, and this is where the fun in that thread began, which I will show in a minute.
First a bit of history
The XOR swap algorithm was widely known in the 80s of last century and before, especially because the 6502 processor (oh the days of LISA Assembler) was vastly popular, as was the Z80. Together, they powered the majority of the home computers in the 70s and 80s.
Read the rest of this entry »
Posted in Borland Pascal, Delphi, Delphi 1, Delphi 2005, Delphi 2006, Delphi 2007, Delphi 2009, Delphi 2010, Delphi 3, Delphi 4, Delphi 5, Delphi 6, Delphi 7, Delphi 8, Delphi x64, Delphi XE, Delphi XE2, Delphi XE3, Development, History, Pascal, Software Development, Turbo Pascal, UCSD Pascal | 7 Comments »
Posted by jpluimers on 2013/12/12
StackOverflow user David Heffernan – Stack Overflow has an interesting take on Delphi postbuild events:
At the moment my actiona read:
if exist PostBuild.bat call PostBuild.bat $(Platform) $(Config) $(OutputDir)
And then the PostBuild.bat script calls a Python script so that I can write my scripts in a real language.
I actually impose the build actions in a shared option set that I reference from all of my projects. That way I enforce consistency and predictability.
I know others use tools like FinalBuilder but building is so important that I feel it’s worth my effort in rolling my own tooling.
– David Heffernan Feb 14 at 20:24
–jeroen
via: Delphi XE3: Problems with complex pre-build events – Stack Overflow.
Posted in Delphi, Delphi 2007, Delphi 2009, Delphi 2010, Delphi XE, Delphi XE2, Delphi XE3, Development, Software Development | Leave a Comment »
Posted by jpluimers on 2013/11/28
One more of the “Missed Schedule” series, this time it was originally scheduled for October 1st, (2013 that is).
Delphi XE2 and up introduced the FrameworkType and FormType elements in the .dproj files to distinguish between VCL and different flavours of FireMonkey.
Actually, Delphi XE1 already had the value None for FrameworkType, so some cross-platform changes trickled into the Delphi builds early.
Though the IDE writes these values to the .dproj files, you [Wayback/Archive] cannot change their values from within the Delphi IDE, not even through the Open Tools API.
There is no documentation about the values in the .dproj files. the only places I could find were these about FrameworkType in combination with [Wayback/Archive] Actions:
that basically tell this:
FrameworkType
Defines whether an action is created for the VCL or FireMonkey (FMX) framework. The default of this parameter is VCL (for compatibility with legacy applications).
This parameter is used to avoid situations when VCL actions are used in FireMonkey applications and inversely; this can lead to a serious increase in an application’s size and to execution errors, for example, calling of Windows API under MacOS.
But it is incomplete, and there is no documentation about FormType. Read the rest of this entry »
Posted in Delphi, Delphi XE2, Delphi XE3, Delphi XE4, Delphi XE5, Development, Missed Schedule, SocialMedia, Software Development, WordPress | Leave a Comment »
Posted by jpluimers on 2013/11/26
Another instalment in the WordPress Missed Schedule series (:
Each version, Delphi gets more features, and grows bigger.
Especially in testing environments (where you want to have a cut-down base machine you can clone from), it is wise to cut down on the installation size.
A few directories you might want to consider compressing for your Delphi installation:
C:\Users\All Users\{*}
The directories with GUID names contain the installer cache. You can ditch the whole installer cache if you keep ISO images of all installations. I prefer just to compress these directories.
Compressing usually saves 50% of the storage there, which can count for 5+ gigabyte of savings for the newest Delphi version.
C:\Users\Public\Documents\RAD Studio
Contains (among others) the help files and SVN examples, and (for the most recent version) the Platforms SDKs.
Saving is usually a couple of 100 megabytes for less recent Delphi versions until about 1 gigabyte for the most recent.
C:\Program Files (x86)\Embarcadero\RAD Studio\#.0\lib
This contains all the precompiled files. Since they are readonly in nature, it pays of compressing them, usually saving 50% or more.
Saves 5+ gigabytes for the most recent Delphi version.
–jeroen
Posted in Delphi, Delphi XE, Delphi XE2, Delphi XE3, Delphi XE4, Delphi XE5, Development, Missed Schedule, SocialMedia, Software Development, WordPress | Leave a Comment »
Posted by jpluimers on 2013/11/20
If you an error like below when compiling Delphi XE5 .dproj files using msbuild … then note the documentation for Debug information (Delphi) – RAD Studio. has not been updated yet as it still lists the values {$D+} or {$D-} {$DEBUGINFO ON} or {$DEBUGINFO OFF}.
(_PasCoreCompile target) -> C:\Program Files (x86)\Embarcadero\RAD Studio\12.0\Bin\CodeGear.Delphi.Targets(187,5): error F1026: File not found: 'False.dpr'
With Delphi XE5, you can specify 3 additional values: {$D1}, {$D2} and {$D0}, or {$DEBUGINFO 1}, {$DEBUGINFO 2} or {$DEBUGINFO 0}
In the msbuild .dproj files , the values are stored as DCC_DebugInformation elements. Read the rest of this entry »
Posted in Delphi, Delphi 2005, Delphi 2006, Delphi 2007, Delphi 2009, Delphi 2010, Delphi XE, Delphi XE2, Delphi XE3, Delphi XE4, Delphi XE5, Development, Missed Schedule, SocialMedia, Software Development, WordPress | 13 Comments »
Posted by jpluimers on 2013/10/31
The question datetime – Delphi Now() function returns a wrong value – Stack Overflow is similar to my article Delphi – Michael Justin had strange floating point results when his 8087 FPU Control Word got hosed.
Good that stackoverflow user Anton Zhuchkov found out the cause himself: his answer indicates the Precision Control (and rounding) part of the FPU state got hosed by wrongly initializing the Direct3D device.
I edited his answer with some extra links to documentation.
Finally I’ve found the solution. I needed to specify the D3DCREATE_FPU_PRESERVE flag when creating a D3D device by D3D.CreateDevice.
Otherwise, without that flag, all floating point operations are performed with single precision. As the TDateTime is a simple Double, and Now() functions is consist of simple addition of date value to time value, it all get messed up by DirectX “smart” override.
Problem solved. It was a tricky one indeed. :)
–jeroen
via: datetime – Delphi Now() function returns a wrong value – Stack Overflow.
Posted in 8087, Algorithms, Delphi, Delphi 2005, Delphi 2006, Delphi 2007, Delphi 2009, Delphi 2010, Delphi 5, Delphi 6, Delphi 7, Delphi XE, Delphi XE2, Delphi XE3, Development, Floating point handling, Software Development | 2 Comments »
Posted by jpluimers on 2013/10/10
Still a C# 4.0 / .NET 4 feature that I need to investigate more deeply: ExpandoObject, partially because I had very bad memories of Variant support in Delphi.
So here are a few links.
First of all: since VB.NET already does late binding with the Object keyword, you cannot use ExpandoObject with Strict On in VB.NET 10.0 and up:
Now the C# links:
–jeroen
Posted in .NET, .NET 4.0, .NET 4.5, C#, C# 4.0, C# 5.0, Delphi, Delphi 2005, Delphi 2006, Delphi 2007, Delphi 2009, Delphi 2010, Delphi 3, Delphi 4, Delphi 5, Delphi 6, Delphi 7, Delphi XE, Delphi XE2, Delphi XE3, Development, Software Development | 5 Comments »