The menu items Run | Register ActiveX Server and Run | Unregister ActiveX Server have been changed. There is now one menu item under the Run menu called ActiveX Server with three sub menu items:
Register
Register for Current User
Unregister
Register for Current User will do just as it says. Handy if your IDE is installed on a UAC system or you need to test in an environment that will be running under UAC. The entire COM registration system has been adapted to account for things registered for current users. This means if you register something for current user then go to import it it will show up in the list.
Another handy feature is the above menu items handle local servers. No longer do you have to set the run parameters with /regserver.
tregsvr.exe now has the parameter -s for "Register or unregister for current user".
Friday, August 13, 2010
Sneak Peek - COM Registration
Posted by
Chris Bensen
at
10:27 AM
4
comments
Labels: C++Builder, COM, Delphi, peek
Thursday, August 12, 2010
More Sneak Peek
Earlier today I posted a list of some of the features new to Delphi XE and C++Builder XE. One oldie by goodie feature is the Install Component wizard:
Posted by
Chris Bensen
at
2:03 PM
3
comments
Labels: C++Builder, Delphi, peek
Sneak Peeks of Delphi XE and C++Builder XE
So it's sneak peek time and there's lots to talk about. I'll post as much as I can over the next few days when I get a chance so things are probably gonna be posted sporadically like now where I'm between builds.
The first obvious thing is the name. Yeah, the name changed.
Oh, almost forgot, I'm also supposed to link to RAD Studio XE Preview and mention that I have been given permission to discuss or show new features of a pre-release version by Embarcadero Technologies.
So the features, because that's what everyone is interested in, right?
SVN version control is now integrated into the IDE. This really is more exciting that it sounds and here's why. ALL the source to it is public! If you use Tortoise or CallabNet then keep using them, just know that you can switch between them using whatever is the most useful. I still use use Tortoise and CallabNet, but I've started using the SVN IDE integration too.
Next we've got regular expressions. A lot of people are probably going to write about them.
There are a couple new RTL functions for creating symlinks that I'll talk about at a later time.
C++ had a major COM change. ATL was replaced by DAX which is pretty slick. You can still use ATL if you desire so more on this later.
COM registration now supports per user registration. I'll have a post on how this works later.
If you do COM then the Registered Type Libraries view is more useful than ever.
The DataSnap wizards have been given a huge facelift making them much easier to use.
That's all I got time for at the moment. Stay tuned for more.
Posted by
Chris Bensen
at
8:21 AM
7
comments
Labels: C++Builder, Delphi, peek
Friday, June 25, 2010
Life before Interfaces
Way way back this is how IUnknown was defined before Delphi added the interface language feature:
IUnknown = class
public
{ IUnknown }
function QueryInterface(const IID: TGUID; out Obj): HResult; virtual; stdcall; abstract;
function _AddRef: Integer; virtual; stdcall; abstract;
function _Release: Integer; virtual; stdcall; abstract;
end;
Here's IUnknown now:
IUnknown = interface
['{00000000-0000-0000-C000-000000000046}']
function QueryInterface(const IID: TGUID; out Obj): HResult; stdcall;
function _AddRef: Integer; stdcall;
function _Release: Integer; stdcall;
end;
There are so many advantages it's hard to list them all and now we just take them for granted, but here are a few advantages:
- implement multiple interfaces on the same object
- compiler support for lifetime management
- assign an interface to a GUID
Posted by
Chris Bensen
at
7:00 AM
12
comments
Wednesday, June 23, 2010
Eyjafjallajökull Photograph

Lightning streaks across the sky as lava flows from a volcano in Eyjafjallajökull April 17, 2010. Copyright REUTERS/Lucas Jackson
Some amazing photographs have come from the Eyjafjallajökull volcano. The photograph above is one of my favorites so far.
Freezing the volcano’s lightning is the story behind the photograph.
Update: This photograph happens to be in this months National Geographic
Posted by
Chris Bensen
at
7:00 AM
0
comments
Tuesday, June 22, 2010
Cleaning Touch Screens
It's really tough cleaning a touch screen monitor when the computer is on.
Posted by
Chris Bensen
at
7:00 AM
18
comments
Labels: CodeGear
Monday, June 21, 2010
Green Screens and Video
This is a pretty interesting video to watch.
Posted by
Chris Bensen
at
7:00 AM
1 comments
Friday, June 18, 2010
Canon G10 Camera
So a while back I sold my trusty Canon G10 camera and actually made money on it. It was a great little camera for what it did well, the problem was I wasn't happy with the things that it didn't do well. I have yet to replace it because I'm happier hanging on to my money with the current set of choices on the market. The Canon G11 or Canon S90 are close but just not quite there. The Panasonic GF1 is real close though. Real close.
Photos come out great with the Canon G10 in good light with subjects that aren't moving fast but I have a short list of complaints:
- Slow autofocus
- Unusable above ISO 200
- Video is terrible
Unfortunately the Canon G11 didn't really solve many of these problems.
Posted by
Chris Bensen
at
7:00 AM
6
comments
Thursday, June 17, 2010
More GetFinalPathNameByHandle
Yesterday I posted about how GetFinalPathNameByHandle is less than ideal. It doesn't work. Well it works in some situations, but it is unusable in a real world situation. The work around is to create a file map to get the file name but that only works if the handle is to a file that is not zero bytes and is not a directory. So for those cases one must use an undesirable function: NTQueryObject. So it works, for now.
Microsoft, please fix GetFinalPathNameByHandle.
Note: I did all my testing on Windows 7. Your milage on Vista may be different.
Posted by
Chris Bensen
at
7:00 AM
0
comments
Labels: CodeGear
Wednesday, June 16, 2010
GetFinalPathNameByHandle
Too bad GetFinalPathNameByHandle only works if the handle is a file that has something in it. For a directory or file with zero bytes it fails in a bad way. So you can't get the name of a directory or a zero byte file. Kind of a bummer especially since this is a new to Vista API and would be really nice to have when used in conjunction with CreateSymbolicLink. There are ways of getting around the odd failure by creating a file map, but the directory and zero byte file is a bit more difficult requiring some rather serious hoop jumping.
Posted by
Chris Bensen
at
7:00 AM
5
comments
Labels: CodeGear
Tuesday, June 15, 2010
Write Unit Tests
That way, you can program like a monkey until the unit tests pass.
Posted by
Chris Bensen
at
7:00 AM
10
comments
Monday, June 14, 2010
Unicycling Photos

I had the fortunate chance to photograph some extreme unicycling recently. The photograph in this post is a composite of four photographs taken at high speed.
Posted by
Chris Bensen
at
11:00 AM
0
comments
Labels: photo
