Tuesday, April 04, 2006

Getting VCL/.NET ready for .NET 2.0 and 64bit CLR

by Allen Bauer

Changes, my friends, are afoot. While waiting for the Delphi/.NET compiler (dccil) to embrace all the latest goodies in the CLR world (partial types, generics, nullable types, anonymous methods, etc...) other engineers have been working on a lot of things that are independent of all the new compiler goodness. The biggest change that is going to happen to VCL/.NET is the change from using Integer for handles (ie. THandle = Integer;), it must now be changes to IntPtr. One common misconception (and one I admit to having fallen prey to as well) is that somehow IntPtr is some kind of “Pointer” type represented as an Integer. Well, call me foolish and gullible, but I'm going to go out on a limb here and say that “IntPtr” is not what I'd call a very good name. OK, OK... it basically sucks as a name. I can see why at first glance one would be led to the misconception that “IntPtr” is a “Pointer.” So what is this odd bit of identifier madness? In actual fact (and to the more intelligent and astute among you, this is all mindless drivel), it really means this “Integer whose physical size and precision matches the physical size of a Pointer on the currently running underlying platform for which the “Just-In-Time” compiler is actually generating code” (pay no attention to the nested quotes in that statement).

Read more here

No comments: