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,860 other subscribers

Archive for the ‘Delphi’ Category

More Delphi x64 bits – Allen Bauer (kylix_rd) on Twitter

Posted by jpluimers on 2010/11/01

To save people from browsing Twitter history:

danny_thorpe:

@davidheff @kylix_rd x64 has SSE2 for FP ops. 8 directly addressable 64bit XMM FP registers. 8087 FP ops emulated in microcode, deprecated

28 Oct

@kylix_rd You mean critical mass isn’t church service on Christmas and Easter?

27 Oct

@kylix_rd Bah. What do they know about floating point? :P MSVC turns off all the FP hardware (exceptions) by default already!

27 Oct

@kylix_rd Yes, we did. The reason was Extendeds don’t exist at all in CLR. x64 FP ops only supporting 64 bit floats is justification

27 Oct

@kylix_rd Ok, so your cause/effect statement was incomplete. :P Shame to see extendeds go. How to count all atoms in the universe now?

27 Oct

@kylix_rd That doesn’t follow. You could still pass extendeds on the stack (not using the x87 register stack)

27 Oct

kylix_rd:

@davidheff Yes. Alignment is critical. Even the stack must remain properly aligned. Its all part of the ABI.

27 Oct

@davidheff SSE instructions and the xmm0:xmm15 registers.

27 Oct

@danny_thorpe That and the fact that MS strongly discourages the use of the FP coproc on 64 bit Windows.

27 Oct

@danny_thorpe Extendeds don’t align well, FP ops would dumb them down, sub-optimal codegen, are other reasons to drop them.

27 Oct

http://goo.gl/D0Kv. “The x87 register stack is unused. … must be considered volatile across function calls” So, Extended = Double.

27 Oct

As speculated, the Tag property will become a NativeInt.

27 Oct

@malcolmgroves @seanbdurkin And if we change the underlying implementation, don’t complain… mkay?

27 Oct

The elephants in the room. Max 64bit PE image size 4GB. Extended = Double (since xmm0-xmm4 are for FP param passing).

27 Oct

Number of calling conventions in x64 – 1. pascal, register, cdecl, stdcall… gone, treated as nop.

26 Oct

Wow… just a few tweets about D64 and I get flooded with new followers. Welcome to all my new followers from the last 24 hours.

26 Oct

Most common 64bit data models, LP64 and LLP64. Windows = LLP64, Linux, OSX = LP64. D64/Windows = LLP64.

26 Oct

64bit gotcha: SizeOf(THandle/HWND/HMODULE/Hxxxx) = SizeOf(Pointer) = 8. This isn’t valid: Value := Integer(Handle).

26 Oct

Type sizes for 64: SizeOf(Integer)=4, SizeOf(NativeInt)=SizeOf(Pointer)=8,

26 Oct

If you must… Value := Integer(TList[x]) -> Value := NativeInt(TList[x]). Even better, TList.

26 Oct

via Allen Bauer (kylix_rd) on Twitter
Danny Thorpe (danny_thorpe) on Twitter

Posted in 8087, Algorithms, Delphi, Development, Floating point handling, kylix_rd, SocialMedia, Software Development, Twitter | Leave a Comment »

Delphi Basics – worth a look!

Posted by jpluimers on 2010/10/27

Quite a while ago, Neil Moffat started the Delphi Basics site.

It is aimed at beginners, but since it has such a wealth of information (for instance a comprehensive list of compiler directives).
So even if you are a Delphi pro, it is worth to give Delphi Basics a look.

The cool thing: Neil originally is not even a programmer, nor a writer.
Maybe that is his strength: he learned by doing, step by step, now giving us a peak on what he learned.

–jeroen

via Delphi Basics.

Posted in Delphi, Development, Software Development | 8 Comments »

Signs of Delphi x64: Allen Bauer (kylix_rd) on Twitter

Posted by jpluimers on 2010/10/26

Probably a few others will blog about these tweets too.
I have bolded the most important pieces:

kylix_rd Allen Bauer

If you must… Value := Integer(TList[x]) -> Value := NativeInt(TList[x]). Even better, TList<Integer>.

6 hours ago

kylix_rd Allen Bauer

Another Milestone: fixed my first legitimate 64bit RTL bug. if TryOpenForInput(t) then s/b if not TryOpenForInput(t) then

10 hours ago

kylix_rd Allen Bauer

Milestone: 64bit compiler now merged into the main dev branch! All devs are now locked and loaded!

13 hours ago

–jeroen

via Allen Bauer (kylix_rd) on Twitter.

Posted in Delphi, Development, kylix_rd, Software Development | Leave a Comment »

Twitter / Danny Thorpe: New programmers are drawn …

Posted by jpluimers on 2010/10/21

Brilliant and so true:

New programmers are drawn to multithreading like moths to flame, with similar results.

Edit: And this is just one example on how tiny little details can impact threading so much.

–jeroen

via Twitter / Danny Thorpe: New programmers are drawn ….

Posted in .NET, Agile, CommandLine, Debugging, Delphi, Development, Opinions, Software Development | 10 Comments »

Solution for OLE DB provider connecting to SQL Server giving error “Multiple-step OLE DB operation generated errors. Check each OLE DB status value, if available. No work was done”

Posted by jpluimers on 2010/10/19

Recently, I had the error message “Multiple-step OLE DB operation generated errors. Check each OLE DB status value, if available. No work was done” occur to me when connecting through the “Microsoft OLE DB Provider for SQL Server”.

I got the below message (in this case in Delphi, but I have seen lots of other people having the same issue using other environments too): Read the rest of this entry »

Posted in Database Development, Delphi, Development, Software Development, SQL Server | 5 Comments »

co-worker question: what is better, extension methods or helper classes?

Posted by jpluimers on 2010/09/29

Recently, a co-worker at a client asked me “What is better: extension methods of helper classses?”.

This question is relevant not only in the .NET and Delphi worlds.

My answer was simple, consisting of these 3 points: Read the rest of this entry »

Posted in .NET, C#, C# 4.0, Delphi, Development, Opinions, Software Development | 5 Comments »

Apple on App Store Review Guidelines: relaxing all restrictions on the development tools used to create iOS apps, as long as the resulting apps do not download any code

Posted by jpluimers on 2010/09/10

To quote the Apple statement:

we are relaxing all restrictions on the development tools used to create iOS apps, as long as the resulting apps do not download any code. This should give developers the flexibility they want, while preserving the security we need.

Which seems to mean you can use both Mono (using MonoTouch) and Flex to develop your Apple iPhone and iPad apps.

–jeroen

via Statement by Apple on App Store Review Guidelines.

Posted in .NET, Delphi, Development, Software Development | Leave a Comment »

Delphi: Use TStrings to parse non-standard separated strings, and validate it with DUnit tests

Posted by jpluimers on 2010/09/08

Recently, I was at a client where in a project strings had to be split from:

'FI-150 1U; FI-049-I L=20 MM;LET OP LASVORM'

Into:

  • 'FI-150 1U'
  • 'FI-049-I L=20 MM'
  • 'LET OP LASVORM'

At first sight, this looks simple: Semicolon Separated Values and you are done.
Not so fast Mr Smart Alec: watch the optional spaces!

The best thing for problems like these is to start with an empty implementation that some units tests covering it.
I use DUnit for Delphi unit testing.

Unit testing should go with code coverage, but there are few Delphi code coverage articles.
I’ll get into code coverage later on, as I’m working with two of the code coverage people to get this to work nicely with Delphi 2010.

Mock objects can be a good addition to unit testing too, so in a future article, I will cover using mock objects with Delphi.

Read the rest of this entry »

Posted in Agile, Conference Topics, Conferences, Delphi, Development, DUnit, Event, Software Development, Unit Testing | 8 Comments »

Delphi XE and RAD Studio XE got RTM and are available for ordering now

Posted by jpluimers on 2010/08/31

While writing this blog entry, I’m installing my new copy of Delphi XE (formerly called Delphi 2011 by some people).

Delphi XE and RAD Studio XE got RTM today, and are now available for purchase.

Contact my colleague Gwan Tan if you want to order it from Dutch speaking countries, and Thorsten Nannen if you want to order it from German speaking countries. Read the rest of this entry »

Posted in .NET, Delphi, Delphi for PHP, Delphi XE, Development, Prism, Software Development | 9 Comments »

Delphi: Optimizing extremely long compile times

Posted by jpluimers on 2010/08/26

Anthony Frazier mentions two very true paths for optimizing your Delphi compile times:

  1. Avoid units with the “read-only” attribute set.
  2. Avoid large circular dependency groups, particularly if you put everything in the interface’s uses clause rather than the implementation uses clause.

To get rid of the second, you should split your interface and your implementation.
Often, one of these two solutions work for that well:

  • Create the interface as a base class, then implement it in a descendant.
  • Create the interface as a Delphi interface, then implement it in a class.

Only if those options do not work, then start using Delphi SpeedUp by Andreas Hausladen.

–jeroen

Via: TPersistent.com » Blog Archive » The Power of Open Source.

Posted in Delphi, Development, Software Development | 19 Comments »