The Wiert Corner – irregular stream of stuff

Jeroen W. Pluimers on .NET, C#, Delphi, databases, and personal interests

  • My badges

  • Twitter Updates

  • My Flickr Stream

  • Pages

  • All categories

  • Enter your email address to subscribe to this blog and receive notifications of new posts by email.

    Join 1,861 other subscribers

Archive for the ‘Delphi XE3’ Category

ModelMaker Code Explorer 10.0.0: Delphi XE3 compatible, Locate Type and Empty Parameter Lists with ()

Posted by jpluimers on 2012/09/10

Last week, ModelMaker Code Explorer 10.0.0 got released:

General new features

  • Delphi XE3 / RAD Studio XE3 support
    (as well as support from Delphi 5 and up)
  • Member Search list allows filtering on member type. Todo items are also displayed.
  • Pascal, new option on tab MMX | Properties | Pascal | New Entities | Methods: Empty Parameter lists. This controls how empty method, procedure and delegate parameter lists are emitted: either suppressed – pascal style, or emitted as ( ) – c-style.
  • Locate Type: displays a filtered list of previously parsed class and interface types. This is used to open the containing source file and locate a class inside the file. Default key binding Alt+Shift+T.

Solved bugs

  • Text containing line breaks and stored in XML (settings, snippets) could contain stray 0x0B (#11) characters. Solved.
  • An access violation at shutdown could occur in older Delphi IDEs if MMX was not docked. Solved.
  • If the Delphi IDE editor buffer contains a stray #0 (which is bad in itself) would cause all kinds of exception in MMX. MMX now detects stray #0’s and abort all editing operations, displaying the line:column of the bad #0 character.
  • Pascal: relative paths starting with \ (relative to root in drive) would not be handled correct. Solved

–jeroen

via: ModelMaker Code Explorer 10.0.0.

Posted in Delphi, Delphi 2007, Delphi 2009, Delphi 2010, Delphi 5, Delphi 6, Delphi 7, Delphi XE, Delphi XE2, Delphi XE3, Development, Software Development | Tagged: , , , , , , , , , , , , , , , , , , | 2 Comments »

madshi.net: Delphi XE3 releases of madExcept (4.0.5) and madCodeHook (3.1.2)

Posted by jpluimers on 2012/09/06

Great: a few more additions for my Delphi XE3 toolbox:

2012-09-05 

madExcept 4.0.5 release comes with the following changes:

  • added support for XE3
  • a couple of bugfixes and minor improvements

madCodeHook 3.1.2 comes with the following changes:

  • added support for XE3
  • added support for Metro (AppContainer integrity) apps
  • fixed: crash in CreateProcessEx (32bit)
  • fixed: uninjection crash in w2k3 error reporting service

–jeroen

via: madshi.net – home.

Posted in Delphi, Delphi XE3, Development, Software Development | 1 Comment »

FastMM4 download available for Delphi XE3

Posted by jpluimers on 2012/09/05

At the day of the Delphi XE3 release Piere le Riche released the download version of FastMM4 (now version 4.991) that is compatible with Delphi XE3.

change log:

Version 4.991 (3 September 2012)

  • Added the LogMemoryManagerStateToFile call. This call logs a summary of
    the memory manager state to file: The total allocated memory, overhead,
    efficiency, and a breakdown of allocated memory by class and string type.
    This call may be useful to catch objects that do not necessarily leak, but
    do linger longer than they should.
  • OS X support added by Sebastian Zierer
  • Compatible with Delphi XE3

Note:

The download is ready, but the FastMM source repository on SourceForge is not yet updated.

–jeroen

via: FastMM | Free Development software downloads at SourceForge.net.

Posted in Delphi, Delphi XE3, Development, FastMM, Software Development | 1 Comment »

Help Test RAD Studio XE3 Support in GExperts 1.37 Beta 1 | GExperts

Posted by jpluimers on 2012/09/04

Didn’t see this one on DelphiFeeds yet:

Help Test RAD Studio XE3 Support in GExperts 1.37 Beta 1 | GExperts.

Now please Thomas, can you create an experimental build too?

–jeroen

Posted in Delphi, Delphi XE3, Development, Software Development | 2 Comments »

Is Embarcadero going to use a way around WinRT sideloading only being available on Windows 8 Enterprise SKUs?

Posted by jpluimers on 2012/08/27

One of the Enterprise SKU of Windows 8 is that it allows side-loading of WinRT apps. It gives you the opportunity to load internally developed Metro-style applications that use WinRT on Windows 8 without a developers license installed on that Windows 8 machine.

This feature was described on many sources, including:

But since many apps (including Delphi written apps as they cannot link to the Visual C++ Run-Time DLL) don’t directly run on WinRT, there is a clear demand of enabling this side-loading feature for non-Enterprise SKUs of Windows 8:

The last link describes a way to circumvent this, and I think that is what Embarcadero is aiming at to enable Delphi XE3 Metropolis style applications to run on WinRT:

Note I updated my Delphi WinRT link clearance post with the last two links.

–jeroen

Posted in Delphi, Delphi XE3, Development, Software Development, WinRT-with-Delphi | 2 Comments »

Jazzy icons for Metropolis UI Applications that you can create with Delphi XE3

Posted by jpluimers on 2012/08/24

Now for some lighter Delphi XE3 related stuff:

These icons seem to go very well with the Metropolis UI Applications that you can create (and convert from VCL!) with Delphi XE3 (see the XE3 video at 0:30).

–jeroen

via:

Posted in Delphi, Delphi XE3, Development, Software Development, UI Design | 2 Comments »

iOS, Delphi XE3 and XE2

Posted by jpluimers on 2012/08/23

I hope I read these mobile and iOS parts of the XE3 and beyond : A look at mobile post by John Ray “JT” Thomas correctly: Read the rest of this entry »

Posted in Delphi, Delphi XE2, Delphi XE3, Development, Software Development | 7 Comments »

Why SizeOf for character arrays is evil: stackoverflow question “Why does this code fail in D2010, but not D7?”

Posted by jpluimers on 2010/05/11

This Why does this code fail in D2010, but not D7 question on stackoverflow once again shows that SizeOf on character arrays usualy is evil.

My point in this posting is that you should always try to write code that is semantically correct.

By writing semantically correct code, you have a much better chance of surviving a major change like a Unicode port.

The code below is semantically wrong: it worked in Delphi 7 by accident, not by design:
Like many Windows API functions, GetTempPath expects the first parameter (called nBufferLength) number of characters, not the number of bytes. Read the rest of this entry »

Posted in 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, Encoding, ISO-8859, Software Development, Unicode | Leave a Comment »

Delphi operator overloading: table of operators, names, and some notes on usage and ‘glitches’

Posted by jpluimers on 2009/10/19

Operator overloading is a very nice feature of the Delphi language.
However. the Delphi documentation on Operator overloading is not completely right.

Below is my table of what I found out so far, and some notes.

It is part of my “Nullable types in Delphi” session that I gave on some conferences.
The downloads for that session contain more detailed information.

This is just an abstract to get you going and a try to answer this operator overloading question on Stackoverflow.
Download the full presentation to get more in depth information.

Let me know if you need more information.

Notes

Operator overloading

Add your own “behaviour” to operators

  • Win32: Works only for records, not classes!
  • An operator and the operand(s)
    are being implemented worden by a “class operator”;
    this is a kind of class method with name and argumen(s)

Example:

  • Multiplication X : = A * B;
  • Operator: *
  • Name: Multiply
  • Operands: 2 -> two parameters
type
  TMyRecord = record
    class operator Multiply(A, B: TMyRecord): TMyRecord;
  end;

Documentation is not correct!

Combining the rules of operator and result types, you can do magical things like Dances with XML | Australian Delphi User Group Members.

Do not use Delphi 2006 with operator overloading

Delphi 2007 fixed a number of bugs including this one: Delphi 2006 wont allow const parameters of type record within record method? – Stack Overflow.

10+ years later: maybe assignment operator?

It might be that in 2019, a new Delphi version gets assignment operator overloading: [WayBack] Operator Overloading Explained – Code Partners

Watch the result type of comparison operators!

Tips:

  • Some operators should be overloaded pair-wise
    = and <>
    shl and shr
    < and >=
    > and <=
    dec and inc
    + and –
    / and *
    div and mod
  • Prefer Explicit over Implicit operators
    • Beware of the built-in type coercion (implicit operators)
    • e.g
      • Byte to Integer;
      • Integer to Double;
      • Variants from/to anything!

Table of operators

operator # usage name cagetory *
and 2 R := A and B; BitwiseAnd bit
not 1 R := not A; //BitwiseNot bit glitch: does not exist!
or 2 R := A or B; BitwiseOr bit
xor 2 R := A xor B; BitwiseXor bit
() cast 1 R := TValue(A); Explicit conversion
:= 1 R := A; Implicit conversion
operator # usage name category *
round 1 R := Round(A); Round function
trunc 1 R := Trunc(A); Trunc function
and 2 R := A and B; LogicalAnd logical
not 1 R := not A; LogicalNot logical
or 2 R := A or B; LogicalOr logical
xor 2 R := A xor B; LogicalXor logical
operator # usage name category *
+ 2 R := A + B; Add binary
/ 2 R := A / B; Divide binary
div 2 R := A div B; IntDivide binary
mod 2 R := A mod B; Modulus binary
* 2 R := A * B; Multiply binary
2 R := A – B; Subtract binary
operator # usage name category *
shl 2 R := A shl B; LeftShift binary name is confusing
shr 2 R := A shr B; RightShift binary name is confusing
1 R := -A; Negative binary
+ 1 R := +A; Positive binary
dec 1 Dec(A); Dec self
inc 1 Inc(A); Inc self
operator # usage name category *
= 2 R := A = B; Equal comparison
> 2 R := A > B; GreaterThan comparison
>= 2 R := A >= B; GreaterThanOrEqual comparison
< 2 R := A < B; LessThan comparison
<= 2 R := A <= B; LessThanOrEqual comparison
<> 2 R := A <> B; NotEqual comparison
operator # usage name category *
in 2 R := A in B; In set

–jeroen

Posted in Conferences, Delphi, Delphi 2006, Delphi 2007, Delphi 2009, Delphi 2010, Delphi XE, Delphi XE2, Delphi XE3, Development, Event, Software Development | 6 Comments »

Delphi – finding the VERxxx define for a particular Delphi version: use JEDI.INC

Posted by jpluimers on 2009/10/15

Edit 20140822 since originally posting, JEDI moved to a GIT repository, so I changed some URLs and added that it is up to date until Delphi XE7.

Finding the correct VERxxx conditional define for a particular Delphi version is asked by a lot of people.

Even the first link in the above search, does not contain the full list!
But: JCL comes to the rescue

The JCL file JEDI.INC usually (read: like 99.999% of the time) is up to that with that information soon.
Currently, it contains all the defines starting with Delphi 1, up to Delphi 2010 XE7.

You can always browse the to JEDI.INC with this link to the sourceforge trunk. link to the GitHub master version.

In fact that file contains a lot more useful defines.
Actually, having the JCL and/or JVCL at hand is a very good practice: it is filled with high quality code that solves a lot of everyday problems.

Note:

VER190 (by some people attributed to the wrong Delphi version) is only used by Delphi 2007 for .NET (Delphi 2007 for Win32 used VER185 by itself and shares VER180 with Delphi 2006 for Win32).

The number 13 (in between Delphi 2009 aka Delphi 12, and Delphi 2010 aka Delphi 14) was never used as a Delphi version number
Since Delphi is mainly developed in the USA, and since a lot people there have Triskaidekaphobia, they showed mercy to those and skipped Delphi 13.

–jeroen

Posted in Delphi, Delphi 1, Delphi 2, 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, Delphi XE4, Delphi XE5, Delphi XE6, Delphi XE7, Development, Software Development | 9 Comments »