Windows 7 Components - Sorry#

I got an email this morning asking for the Windows 7 component update. I had published those last Thursday, but must have unchecked the publish button. It is available now, so go here and get them.

More information will come, soon.

Tuesday, October 06, 2009 10:25:33 PM (W. Europe Standard Time, UTC+01:00) #    Comments [0]  | 

 

Google AdSense


Windows 7 Components - Beta#

Well, here comes the update promised. Originally, I planned to release it yesterday, but I had to give a talk today on short notice. So I pushed around priorities a little.

Anyway, this update has a few fixes as well as support for taskbar windows as well, interesting for MDI applications. It is all in the code.

A more detailed update will come in the next days, for now, just the download.

ZIP File (790 Kb). Uninstall prior version first! Unzip and install into IDE.

Friday, October 02, 2009 10:23:21 PM (W. Europe Standard Time, UTC+01:00) #    Comments [0]  | 

 

Windows 7 Components and RAD Studio 2010 Logo#

Well, I am quite overwhelmed by the amount of positive feedback I've received during the recent days. One of the most frequent questions was whether I would send out previews to select people. In short: no, this would take too much of my time keeping up with the people. So far only two have received the current dev-state. One is going to use them today for a talk about Windows 7 and one person has given me the most valuable input on the latest feature, the Windows Taskbar Previews.

To all others: it's only two more days, you must wait. Sorry for those.

One good comment regarded the logo used in the latest preview, stating Borland Delphi, so I have changed that. In due course I redesigned the Embarcadero Studio logo as EPS file, so if you're interested, I provide it as download. The download contains the EPS file (vector graphic) and a PNG file (bitmap @ 600dpi) for your use. Please, be aware that Embarcadero may be quite alert to how you use it. I can not give you permission to use it, but I guess (hope?) they will be fine with us using it to promote their products within ours. If not, it's your risk to take!

Download file (ZIP, 430kB)

Tuesday, September 29, 2009 7:26:59 AM (W. Europe Standard Time, UTC+01:00) #    Comments [2]  | 

 

Delphi Controls for Windows 7 - State Update#

Well, in my last blog post I've asked for your input for getting a preview of WinControls. I am getting pretty well along with the controls and I've wanted to show you a small preview of the Taskbar Windows component.


Download video (WMV, 4MB) here

Watch my blog for the upcoming release of the controls and see them live at the EKON 13 this week!

Sunday, September 27, 2009 10:44:29 PM (W. Europe Standard Time, UTC+01:00) #    Comments [6]  | 

 

Update for the Windows 7 Taskbar Components coming soon#

Currently, I am getting ready to ship an update for the Windows 7 taskbar components. As the preview, this one will be open source and free of charge for anyone to use in any project.

However, one problem still remains to be resolved. I try to get a "screen shot" from a tab sheet, whether it is currently visible or not. The normal Delphi method WinControl.PaintTo, and the Windows API methods PrintWindow and BitBlt do not give the desired results.

What do I need this for? Well consider the image below, showing the tabs of the Internet Explorer, currently opened. Something similar I want to create for Delphi as simple component. To create the preview, I must be able to get the "screen shot" of all Tabcontrols, whether they are visible or not.

I have uploaded a sample application, which demonstrates the problem. Feel free to download and test it. This application runs on Windows XP and Windows Vista as well, as it does not demonstrate the preview windows, but simply the "copy" feature, ehm problem.

Feel free to send me any ideas you have regarding this problem, as all other solutions would not be the best ;)

Download the problem sampler (Source, ZIP-file, 4 KB)

Email any solution to dwischnewski (at) gmail.com

Thank you for your support, I'll mention the solution provider in the finals.

UpdateI got the solution in my Inbox now, thanks to Craig Peterson from Scooter Software, who already has helped me a great bit for this whole problem. I'll finish the components now, await the release for October 1st. Be first to see them at the EKON.

Wednesday, September 16, 2009 3:25:41 PM (W. Europe Standard Time, UTC+01:00) #    Comments [4]  | 

 

Delphi Days 2009 in Hamburg (Pictures)#

Well, in a word: fantastic! The "Delphi-Tage" (Delphi Days), this year in Hamburg, are over. Last Friday and Saturday were great. Lots of sessions, quiet a few things to learn (and give away), fantastic people and friends. It was great. Thanks to all speakers and visitors, as well as thanks to Sabine Rothe from Embacadero Germany and Daniel Wolf of the Delphi-PRAXiS for making the event such a success!!!

Here is a selection of my pictures:

Do you have pictures yourself? Publish them on Flickr.com and tag them with the following tags: Delphi-Tage 2009 Hamburg Delphi Tage myEvents:event=Delphi-Tage myEvents:DT=2009, allowing us to display them on www.delphi-tage.de.

Tuesday, June 09, 2009 9:35:59 AM (W. Europe Standard Time, UTC+01:00) #    Comments [0]  | 

 

Review: SDN Event March '09#

First: thank you Johan and Dr. Bob for inviting me over, I had a great time.

It was interesting meeting so many developers from the Netherlands and from so many fields across the whole development sphere. The SDN group is not solely for Delphi developers, but for all and this makes their events quiet different from others.

Developers have the chance to look outside their box at other options or just get in-depth information on their field of interests. Dr. Bob and Johan already invited me to come back for the large SDN Event in October and I am looking forward being there again.

This event was in Driebergen, close to the city Zeist, where I took this photo the night before the event.

Zeist, Netherlands

Monday, April 06, 2009 2:48:52 PM (W. Europe Standard Time, UTC+01:00) #    Comments [0]  | 

 

Insufficient key column information for updating or refreshing#

Basically, this is a note to myself, but it may help you anyway. So, I publish it here.

Creating a little more complex query today, I got the error message "Insufficient key column information for updating or refreshing" when trying to apply changes to the data set.

Solution: Set CursorLocation to clUseServer and CursorType to ctKeySet.

Technology: ADO, SQL Server

Friday, February 13, 2009 8:04:22 PM (W. Europe Standard Time, UTC+01:00) #    Comments [0]  | 

 

Graphic Tablets and Delphi#

During the recent days I was looking for a solution on how to access properties of my Wacom tablet within a Delphi application.

Using the Pen & Ink API of Windows is one possibility, however that offered much more than I needed, not thinking about the time getting into that one as well. On the Delphi-PRAXiS I found a link to Centaurix, a company offering an easy to use Delphi component, which gives me access to the properties I just needed. The component is freeware and comes with source code.

Great!

Download here.

Thursday, February 12, 2009 3:44:39 PM (W. Europe Standard Time, UTC+01:00) #    Comments [0]  | 

 

Windows 7 - Displaying your applications status in the Windows Taskbar#

Today, I show you the second set of screen shots from the Windows 7 Taskbar components. Since Windows 95 - which introduced the last real change in how the user handles multiple running applications on Windows - we all know the notification area. Sadly many programs have abused this area, so that on some users computers this really grow into a monster featuring easily 30 and more icons. Never on my computer though ;-)

Windows 7 stops this Taskbar spamming in a really effictive way. The notification icons will not be shown anymore, at least on default. They are all hidden away. Even when your application wants to show a (bubble) hint, the user will not see it unless the user approved your application first. Now, since sometimes showing a state can be really important, Windows 7 introduced overlay icons in the Taskbar entry for running processes. This way the application can show some information without the need for more screen real estate - the application already has an entry in the Taskbar anyway - at least in most cases.

Click on images to view full size version.

Windows 7 automatically hides all notification icons unless the user wants them to show
Windows 7 automatically hides all notification icons unless the user wants them to show.

Showing the tasks state in the Windows 7 Taskbar
Showing the tasks state in the Windows 7 Taskbar.

Note the overlay icon in the second screen shot. Maybe the application is performing a search. A side effect of this is, that the designers should start creating application icons and overlay icons that work with each other well. Overlay icons are shown only if the user uses large icons in the Windows Taskbar (default setting).

For your Delphi application, simply drop a the TdwOverlayIcon component on your form, connect it to an image list (16 x 16 pixels for bitmap size) and set the image index used. Set it to -1 for displaying no overlay icon.

Saturday, January 24, 2009 1:21:47 PM (W. Europe Standard Time, UTC+01:00) #    Comments [4]  | 

 

Windows 7 - Displaying Progress of a Task in the Windows Taskbar#

You have asked for it, so here are the first images for you. Today I want to show you a few screen shots of displaying the progress of a rather lengthy task in the Windows 7 Taskbar. You should not that Microsoft does not encourage you to use this for shorter tasks which usually finish within a few seconds. But this is up to you in the end ;-)

For all of you Delphi 7 users, the first screen shot shows Delphi 7 running on Windows 7 using those components. So, this works as well.

Click on images to view full size version.

Del phi 7 with Demo app and Windows 7 components
Delphi 7 running on Windows 7. The demo application is loaded in the IDE, the components are shown in the tool palette.

Showing a marquee in the taskbar
The marquee shows a task in progress with undeterminable end - like connecting to a server.

Showing a progressing task
The progress is coming along just fine.

Showing a paused task
The application may be waiting for some user interaction, the current task is paused.

Further, you can cancel a task, coloring the progressbar red as well.

For those of you not knowing Windows 7 just yet and wondering why some application icons have a border in the taskbar and some do not: Windows 7 allows you to pin applications to the taskbar. This way, they will always be in the same order/place. The framed ones are actually running, others are just waiting to be started.

Wednesday, January 21, 2009 12:56:23 PM (W. Europe Standard Time, UTC+01:00) #    Comments [2]  | 

 

The fastest compiler taking forever#

Over at the Delphi-PRAXiS we had an interesting thread going on the last two days where one user asked for what reason it could have, that his Delphi compiler is so slow. It took about 45 minutes to compile just over 20.000 lines.

The source of the problem was a piece of software, which in my mind never earned to be called software. The network version of the Norton anti-virus software. The user asked his admin to exclude PAS, DFM, and DCU files to be excluded from the check list of files being checked with every access.

The compile time went down to 8 seconds. That is just 0,3% of the original compile time. Sadly though, that will not be working anymore...

Wednesday, January 21, 2009 9:32:12 AM (W. Europe Standard Time, UTC+01:00) #    Comments [7]  | 

 

Alpha 1 of "Windows 7 Controls for Delphi"#

Well, as written here before, I have toyed around with Windows 7 and created a few Controls that you can simply place on your Form to support some of the most obvious Windows 7 features. Currently available are:

  • Jump Lists - right click your application entry on the taskbar to see those
  • Overlay Icon - show the state of your application right in the taskbar (notification icons are hidden by Windows 7 by default, finally)
  • Progress indicator in the taskbar button
  • Taskbar Thumbnails - you application can be controlled directly from the taskbar preview window

Please note, that if you have Aero turned of, or your Windows 7 is running in a VM, most of the features are not supported by Windows 7 (atm?).

The installer provides packages for Delphi 7, Delphi 2006, Delphi 2007, and Delphi 2009.

Further, those are just the first version in early Alpha State, but they are for free ;-) If you want to use them to create your own controls, those MUST be placed under GPL. For use in your applications you can choose freely between GPL, LPGL and MPL, whatever suits your needs.

In the coming days I'll post a few screen shots and/or short videos demonstrating those controls in action.

If you have suggestions, improvements, or anything else regarding those controls, do not hesitate to contact me ;-)

Download the installer (1,5 MB)

Note: the installer only copies the files to your local hard drive (default folder: User Documents\Delphi Win7 Support). You must open the corresponding project group/package and install it into your Delphi IDE.

Have fun,
Daniel

Tuesday, January 20, 2009 11:53:05 AM (W. Europe Standard Time, UTC+01:00) #    Comments [5]  | 

 

Windows 7 Controls for Delphi#

Probably tomorrow, I will publish my first attempt to create controls tailored towards Windows 7. Naturally, those controls will run on older Systems (tested on XP and Vista), but the new Windows 7 functionality will be available on Windows 7 only, silently failing on older systems.

Currently, I am setting up a VM with Windows XP and Delphi 2006 to test them. Wait a little more and enjoy ;-)

The packages for Delphi 2006, 2007, and 2009 will be included.   

Monday, January 19, 2009 3:57:04 PM (W. Europe Standard Time, UTC+01:00) #    Comments [1]  | 

 

Windows 7 Jump Lists#

During the last days I have taken the time to get familar with Windows 7, at least a little. So far, I do like it, though it is far from stable on my machine at the moment - at least, Windows Vista was better in that respect.

The new Taskbar and the start menu are pretty amazing. I like the feature to show progress and states on it, as well as add buttons to the window preview panes. Also, the Jump Lists are quiet nice, so I started importing those features into Delphi, all available as a small component set. Those will be available soon, with more details about what and how they will work.

However, so far I have seen many sample videos, read quiet a few blog entries on how to program those jump list, but they all habe one thing in common: they are missing the code samples. If you are looking for those samples, download the Windows 7 SDK Beta and look into the installation folder. For me, those are at C:\Program Files\Microsoft SDKs\Windows\v7.0\Samples\winui\Shell\JumpList.

Saturday, January 17, 2009 1:55:15 PM (W. Europe Standard Time, UTC+01:00) #    Comments [3]  | 

 

Delphi Code Camp - September 2008#

So, you've read it here before, but I have to write about it as well. The next Delphi Code Camp is coming up, and it is the best so far. The concept of the Code Camp was totally redone and this time there will be loads of new courses as well. It starts with a full day session "back to the roots." My friends Holger Flick and Daniel Wolf will give a hands on session for all who are not yet totally familar with Delphi and OOP. You have colleagues whos code scares you? Send them there, they'll get OOP injected in just a day.

All coming days, two (most are) full day courses run parallel. Olaf Monien will talk about the VCL for the Web (aka IntraWeb) and about internet protocols (Tue, Wed). Daniel Wolf will talk about usability - a must go, if you ask me. Sadly I have to be at Photokina in Cologne that day (Tue). Wednesday may track on Windows Technologies around COM is coming. Thursday Bernd Ua will talk about Multithreading and Thomas Pfister helps your RAVE reports along. So, if you speak German and you need some more of those skills, be sure to check it out!

All information are online at entwickler akademie.de. You want to go there, send me an e-mail and I'll help you to get a rebate, let's say 20% off the price ;-)

Thursday, September 11, 2008 10:37:14 AM (W. Europe Standard Time, UTC+01:00) #    Comments [0]  | 

 

Pictures of the Delphi-Tage 2008#

The Delphi-Tage (Delphi Days) event in Günzburg, Germany were a success. Finally I had a few minutes to scan through my image stack and select a few for presentation online. Many happy faces - well with the offers available there, no wonder at all...

Wednesday, June 25, 2008 2:37:07 PM (W. Europe Standard Time, UTC+01:00) #    Comments [0]  | 

 

Save over 80% on Delphi - that is EIGHTY PERCENT - YES!!!#

Next weekend, on June 14th there are the German Delphi Days (www.delphi-tage.de). On this event speakers from Italy (Marco Cantù), CodeGear US (DavidI), CodeGear Germany and Embarcadero are coming, as well as many speakers from the German community.

Let's talk Delphi! Delphi! and Delphi!

And now, just coming in, they allow to sell older releases at prices never seen from CodeGear! BDS 2006 Architect SmallTeam Pack is being sold at 1.309 Euro (instead of 6.652 Euro), Single License for only 714 Euro (instead of 4.152 Euro). And many more products. Many other products like JBuilder 2007, the Turbo line, C++Builder 2006 and Books are for sale. Over 20 different products in over 150 combinations!

Those prices are valid on June 14th only!!! So do not miss them and come and visit the German Delphi Days, it is a once-in-a-life-time saver offer, as long as the products last!!! First come, first serve!

Thursday, June 05, 2008 2:55:36 PM (W. Europe Standard Time, UTC+01:00) #    Comments [0]  | 

 

Starting BETA of our new product for HDR image generation#

Hello folks,

finally we will bring a new product on the market, completely developed in Delphi 2007 for Windows. The software will allow you to render HDR images from one or multiple single images.

If you do not know much about HDR imaging, I recommen the wikipedia entry: http://en.wikipedia.org/wiki/High_dynamic_range_imaging

Whom are we looking for? People with real interest in HDR imaging, who have some time to take images with their digital camera (DSLR recommended) and try to compose final HDR images using our software. If you have experience with other HDR software (like Photomatix, Artizen, FDRTools, ...) you probably can help us too ;-)

So, if you are interested in joining the beta, a few spots are still available. Write a short email to beta (at) fasthdr.com, put your name into the email and a short reason why you are interested. If you have samples of previously made HDRs online (like Flickr), include a link, but please, do not put them into the email.


Anyway, another thought. We use a few TMS components in this project. Many people ranted about my TMS posts and how I was making all of it bad - they should have read more properly. I only talked about one specific component, and I know there are many more, and quiet a few of them, I do like too ;-)

FastHDR uses following great TMS Components (among others): TAdvOfficePager, TAdvOfficeCheckBox, TSpinEdit, TAdvRangeSlider, TAdvTrackBar
Also, we use: ImageEn from HiComponents, TNT Components, DC RAW and ImageMagick

Monday, May 05, 2008 3:25:55 PM (W. Europe Standard Time, UTC+01:00) #    Comments [0]  | 

 

Delphi CodeCamp - Was würde Sie interessieren?#

Jetzt ist das zweite Delphi CodeCamp sehr erfolgreich abgeschlossen und wieder habe ich über die Entwicklung mit Delphi für Windows Vista referiert. Dieses Mal hat das Delphi CodeCamp in Wiesbaden gastiert. Den Tag zuvor habe ich genutzt, um ein paar Fotos zu machen. Dreie dieser sind in meinem Flickralbum Wiesbaden zu sehen.

Unabghängig davon möchte ich das nächste Mal wahrscheinlich ein neues Thema anbieten und würde mich über Anregungen sehr freuen. Also, wenn Sie einen Wunsch haben, dann her damit.   

Thursday, April 24, 2008 9:29:49 AM (W. Europe Standard Time, UTC+01:00) #    Comments [0]  | 

 

A little more on the TMS AdvToolBar components#

Yesterday I sent an e-mail to Bruno of TMS Software naming a few of the problems I've found with their AdvToolBar component. Today he wrote back to me stating, that most are fixed already. I'll wait for the next update on their website and let you know of the changes then. Further, I'll add a special page about the TMS components to my blog (coming with the next update of their components), where I keep track of the progress of their components.

I know, I have used harsh words, however, TMS Software - while being shocked - takes them seriously and works to improve their solution. I am excited to see what will come in the feature for use. I am sure, they will improve the form rendering on Vista too, this needs more work.

I am looking forward to see what comes :-)

Sunday, March 30, 2008 5:47:48 PM (W. Europe Standard Time, UTC+01:00) #    Comments [1]  | 

 

TMS Software#

Well, if you remember the old web site of TMS Software, you will be glad to learn, that they have relaunched their web site. It looks so much better, you must go and visit their site, it is well worth your time.

Go visit them now: http://www.tmssoftware.com/

@Bruno: sorry I did not answer your e-mail yet, but I will this weekend. I know I promised an faster response, but time did not permit at the moment.

Friday, March 28, 2008 11:59:10 AM (W. Europe Standard Time, UTC+01:00) #    Comments [0]  | 

 

About my last post...#

My last post about the VCL Ribbon Controls got me some heated feedback, mostly per e-mail, some as comments (not yet published, but I will, rest assured) and pointed out some more facts. About all those I will write here in the comming days some more.

Some wrote about the "waste of money" and asked me whether I had to write it in such strong words. Did I have to? Probably not. Will I change it? No, the word is out now. Am I sorry, just a little. I should have worded it differently, however, it is out now, and I will stand by it.

Will I do some more reviews about both controls. Yes, probably. It was pointed out to me, that the DevExpress controls violate the license as well. However not where, so I guess I have to do some more comparisons to the style guide. Bruno of TMS Software asked me about theirs, and I will answer him today. He, btw was the first to response to me (besides some Skype chats) and he was really friendly about it, though he would have preferred some up-front "warning" or talking about. I admit he has a point there and I'll think about such things in the feature.

The TMS solution has more optional features, that the DevExpress solution has not. I will talk about those as well. I'll also talk about some of the things written before, where TMS has solutions, but forces you as programmer to always watch out for those. It has advantages as well as disadvantages, but for my productivity I rate those disadvantages higher. If this post has some overall effect on the Ribbon Control of TMS, I will be happy to test it for them and I will be happy to blog about that as well.

Further, rest assured that I did not have an easy time writing that last post, but on the other hand I do not understand why so many get so worked up when someone does say what they think, even if it is not a positive mood. I am rather honest than shy. Sorry for hurt hearts.

Thursday, March 27, 2008 10:12:30 AM (W. Europe Standard Time, UTC+01:00) #    Comments [0]  | 

 

VCL Ribbon Controls - There is no fully acceptable solution available, or...?#

Currently I am playing around with different ribbon controls. Sadly, there is not one single solution for VCL Delphi developers, that brings (almost) all the features into our IDE - not one! THe two big solutions out there are

First, let's take a look at how MS Word 2007 displays the ribbon controls.

Ribbon Controls in MS Word 2007

Since Microsoft has patented the Fluent Office UI (as they call it), so if you plan to use it in your applications you have to agree to their license. Sadly, we are not allowed to discuss the license publicly, if you do not have agreed to it yourself. So all I write about it here, you have to read up on yourself. More information you'll find at: http://msdn2.microsoft.com/en-us/office/aa973809.aspx.

Anyway, whether you like the UI style or not, it is an eye catcher and imo once you get used to it, it is a really effecient way to access the applications functions.

Now, first a look at the solution from DevExpress.

VCL Ribbon Controls Solution from DevExpress

DevExpress has done a great job in bringing the Ribbon Controls into our VCL applications. Once you have taken the time to understand their logic in how to setup your UI, it is very easy to use. Their nice approach in how to use the Action components makes it very easy to divide your application code into UI handling and business logic.

However, if you take a look at the Word screen shot, you'll notice the red area in the title bar "Bildtools", those are part of the contextual tabs of the Ribbon UI design. They are highlighted to tell the user that their functions are directly related to the currently selected object. Sadly, DevExpress has not implemented this feature, one of the most usefull and sensible, into their VCL solution. The request to add this feature was entered on 11/20/2006 and its state (currently: Accepted - Release TBD) has not changed since 11/30/2006.

Now, let's look at the TMS solution:

VCL Ribbon Controls Solution from TMS Software

Imho, this is a really bad implementation of the Fluent Office Ribbon UI. First, you see the frame of the application - that is as "good" as you can get it with their solution - and this really looks terrible. Next, they are violating the Ribbon UI license in multiple areas, which, sadly, I am not allowed to discuss here. Send me an email if you have specific questions about that, we'll work out a way to talk about it. However, since you have to agree to the license in order to use it in your application, you automatically violate it as soon as you use the TMS solution (example: look at the bottom of the ribbon control, look at the [I] access key hint, ...) - so you must not use it.

Whether, or not, this is part of the license, I can talk about one part of the TMS solution, which is bad. Once the window becomes to small to fit all groups (such as Clipboard, Font - Paragraph, Styles, ... in the screen shot above) of the ribbon page, they collapse in a way that the user does not see, which group is which - no labels, no icons, ... Your users will hate you!

Besides this point, imo, the design time usage of the AdvToolBar is horrible. You have to exactly place every component - they should be placed automatically. I do not want to align them by hand, the should flow! I do not have to align them in normal action menu bars either, just arrange their order.


So, if you are looking for a VCL Ribbon Control, currently I would suggest to use the Devexpress solution. However, be aware that they do not support contextual tabs currently, and probably never will (please, let me be mistaken in this point!). If you need those, imo you are out of luck, because you imo you should leave your fingers from the TMS solution, that is wasted money.

Well, that said. If you know of another VCL Ribbon Control, which can be used commercially, let me know. I'll check it out!

Wednesday, March 26, 2008 2:08:05 PM (W. Europe Standard Time, UTC+01:00) #    Comments [8]  | 

 

Delphi Win32 Project Localizer#

Well, it is available since about 3 weeks now and I had some feedback already. Now, I would like you guys to take a look at it and let me know what you think. There is a small update in the pipeline, but that is not available yet. A short product description and a video are on the project site: http://www.wischnewski.tv/en/products/dw32pl.html

Start localizing your applications. Demos come with the installer - the product is free for personal and commercial (not governmental) use.

Friday, March 21, 2008 4:26:46 PM (W. Europe Standard Time, UTC+01:00) #    Comments [0]  | 

 

More EKON Spring 2008 Papers#

Since Sebastian Gingter (a moderator of the Delphi-PRAXiS) is not on the Delphi-Feeds list, and he just uploads(!) his papers right now, I am giving you a pointer over to his blog. His papers are on WMI (Windows Management Instrumentation) and Patterns (MVVM), in German, too.

Entries:

Thursday, February 28, 2008 5:54:40 PM (W. Europe Standard Time, UTC+01:00) #    Comments [0]  | 

 

EKON Spring 2008 - Papers Online#

My conference sessions are all done, so the papers are ready for download. Go to my Conference Papers page and download them as you like. They are German only this time.

Thursday, February 28, 2008 5:28:42 PM (W. Europe Standard Time, UTC+01:00) #    Comments [0]  | 

 

BFWC has arrived - bless the day!#

Just a few minutes ago, Daniel Magin has published his BlackFish WebConsole. Go, download it, check it out and use BlackFish SQL now. The WebConsole is available for free!

Wednesday, February 27, 2008 5:45:05 PM (W. Europe Standard Time, UTC+01:00) #    Comments [0]  | 

 

Parameters of NT Services#

Today an interesting question came up in the Delphi-PRAXiS. One of our users asked how to parse parameters sent to a NT service application. The good old trusted version of normal VCL applications does not work:

for I := 1 to ParamCount do
  Foo(ParamStr(I));

So a quick dive into the Delphi 2007 source code revealed an interesting property of the TService class, called Param.

for I := 1 to ParamCount do
  Foo(Param[I]);

So if you ever want to run parameterized services, that is the way to get them ;-)

Monday, February 25, 2008 10:42:13 AM (W. Europe Standard Time, UTC+01:00) #    Comments [0]  | 

 

EKON Spring - Starts Today#

Well, I just hope that the EKON has a good start today and all of you, there already HAV FUN! The first two days are centered on Workshops mostly on basic OOPP/Delphi concepts. EKON Spring itself is centered around Delphi concepts, rather than all things surrounding development with Delphi.

My Session are on Wednesday Logging with SmartInspect and on Thursday Application Localizing using my new tool.

Tomorrow I will take off here and come to Frankfurt - I am looking forward to see you all there!

Monday, February 25, 2008 8:45:23 AM (W. Europe Standard Time, UTC+01:00) #    Comments [0]  | 

 

EKON Spring - Thursday Session#

At the EKON Spring, I'll present a new solution for multi-language VCL applications. It allows you to translate all forms and resource strings in an external application, comes with a command line tool for updating strings. Every language resource can be deployed seperatly, the application can be deployed without any additional resources at all - in the original developer language.

In a second step, I'll probably will not show that at the EKON Spring yet, you can save translations of forms and resource units for later projects to use.

Stay tuned for more, I'll present that here after the EKON for download ;-)

Best of all, there will be a fully usable version for free.

Sunday, February 17, 2008 10:10:33 PM (W. Europe Standard Time, UTC+01:00) #    Comments [5]  | 

 

Delphi Days 2008 - Germany, Austria, and Switzerland#

Finally, we have announced the official date of the upcoming Delphi Days 2008, the 4th time the German speaking community will meet for sessions, talks, and get-togethers. This year we will meet in Günzburg, southern Germany to better accomodate Delphi developers coming from Austria and Switzerland as well.

While planing is still in progress, please, tell us what you would like to see, hear, and do at the next Delphi Days. Your suggestions are welcomed and needed to make it a memorizable event, once again. This year, we want to go back to the roots and more emphasize on the community idea of the whole event.

Let's meet in Günzburg on June 14th!

Tuesday, February 05, 2008 5:24:33 PM (W. Europe Standard Time, UTC+01:00) #    Comments [0]  | 

 

DSDT is now Delphi-Treff#

This week the administrators of www.dsdt.info (Delphi-Source, der Delphi-Treff) relaunched the web site with a new design. The new side reminds me of a Web 2.0 portal just from the looks of it. With the relaunch of their site, they chose a new name, simply www.Delphi-Treff.de. It is one of the leading German language Tutorial sites on the web for Delphi developers.

If you know German, check it out.

Tuesday, January 15, 2008 2:55:35 PM (W. Europe Standard Time, UTC+01:00) #    Comments [1]  | 

 

Your project does not have a type library...#

I've used the christmas-new-year-time to reinstall my work station. One year of abuse, no images, etc. has taken its toll and it was time to do something about just that. After I had reinstalled my most needed applications on-top of Windows Vista Ultimate (Visual Studio 2008, RAD Studio 2007, InterBase 2007, 2007 Office System, Acrobat Reader and 7-zip) I pulled my source codes of our largest project. We needed an addition to one of the libraries, so I loaded it into the Delphi IDE and wanted to go to the type library editor (it is a ActiveX/COM server library).

Well, the menu point was grayed out. Delphi did not let me know why it did not want to load the type library, nor did it show any error message. After experimenting a little, I found out, that I could load about half the COM server projects just fine, while others did not let me load the type library editor either. No error messages, no warnings, and all would compile just fine.

Later I tried to load the TLB file directly into Delphi and I got the message, that it cannot be loaded, because a dependent ActiveX library is not installed. So I started registering the other type libraries of the project, one by one, wondering why - I never had to do that before - and it did not help in any way. Later I had an idea and checked upon my MS XML installations and found the MS XML 3, MS XML 5, and MS XML 6 were installed, MS XML 4 was missing, however. After installing MS XML 4 I could load all projects again and edit the type libraries as well.

So please, CodeGear, start giving us meaningful error messages in this case too. I will have to come up with a example showing the problem, but how can I let them know how really important such issues can be...?

Anyway, happy new year to all of you out there!

Friday, January 04, 2008 3:11:32 PM (W. Europe Standard Time, UTC+01:00) #    Comments [4]  | 

 

Thank you for all you've done for us#

John Kaster informed us today of the passing of Robert Marquardt. Robert was a well respected member of the Delphi-PRAXiS and we will remember him in the fondest ways. He has done much for the Delphi Jedi Project and I hope the project will find a new person, who will step into his steps and help it prosper the way it should.

I have met Robert at various Delphi happenings and it has been a pleasure talking to him, always. I hope you have a great time ahead of you. My sincere sympathies for his family and closests friends, I have just written short messages with him and had small talks only, but they were a pleasure, always.

Thank you again Robert, for all you have done for me, the Delphi-Community of Germany and the Delphi developers world wide. It hasn't been easy always, especially in the last years, but you have been there for us, THANKS!   

Wednesday, January 02, 2008 1:55:45 PM (W. Europe Standard Time, UTC+01:00) #    Comments [0]  | 

 

Working with the Castalia Delphi Parser#

Last week I asked for a list of Delphi parsers/lexers, to analyze Pascal/Delphi files. One of the solutions named, and by far the best one, was the Castalia Delphi Parser. After playing with it a while I started to see what it really can do. While it is not the easiest to use, it goes a long way. However, I ran into some wall. Files like Windows.pas and System.pas from the original Delphi distribution (checked against Delphi 2007) cannot be parsed with it.

For Windows.Pas, it stops on the declaration of the type DWORD.

type
{ Translated from WINDEF.H }

  WCHAR = WideChar;
  {$EXTERNALSYM WCHAR}
  PWChar = PWideChar;

  LPSTR = PAnsiChar;
  {$EXTERNALSYM LPSTR}
  PLPSTR = ^LPSTR;
  {$EXTERNALSYM PLPSTR}
  LPCSTR = PAnsiChar;
  {$EXTERNALSYM LPCSTR}
  LPCTSTR = PAnsiChar;
  {$EXTERNALSYM LPCTSTR}
  LPTSTR = PAnsiChar;
  {$EXTERNALSYM LPTSTR}
  LPWSTR = PWideChar;
  {$EXTERNALSYM LPWSTR}
  PLPWSTR = ^LPWSTR;
  {$EXTERNALSYM PLPWSTR}
  LPCWSTR = PWideChar;
  {$EXTERNALSYM LPCWSTR}

  DWORD = Types.DWORD;
  {$EXTERNALSYM DWORD}

In System.pas it stops, because it cannot handle {$IFDEF} blocks very well. When coming to the second time when unwind is declared (this time for Linux) it stops, because it needs a new const before it.

const
{$IFDEF MSWINDOWS}
  unwind = 'unwind.dll';

type
  UNWINDelphi-PRAXiSROC  = Pointer;
function UnwindRegisterIPLookup(fn: UNWINDelphi-PRAXiSROC; StartAddr, EndAddr: LongInt; Context: Pointer; GOT: LongInt): LongBool; cdecl;
  external unwind name '__BorUnwind_RegisterIPLookup';

function UnwindDelphiLookup(Addr: LongInt; Context: Pointer): UNWINDelphi-PRAXiSROC; cdecl;
  external unwind name '__BorUnwind_DelphiLookup';

function UnwindRaiseException(Exc: Pointer): LongBool; cdecl;
  external unwind name '__BorUnwind_RaiseException';

function UnwindClosestHandler(Context: Pointer): LongWord; cdecl;
  external unwind name '__BorUnwind_ClosestDelphiHandler';
{$ENDIF}
{$IFDEF LINUX}
  unwind = 'libborunwind.so.6';

Do you have a solution for those problems, or do you now another parser/lexer which will help me along.

Thanks and a Happy New Year,
Daniel

Friday, December 28, 2007 4:34:08 PM (W. Europe Standard Time, UTC+01:00) #    Comments [0]  | 

 

Searching your Delphi files...#

Yesterday, I asked you guys for a list of Pascal/Delphi parsers. Today I ask you how I should really use it.

What I am going to do...

I am currently writing a indexing filter, that will index your Delphi/Pascal files with the Windows Search Desktop, which comes with MS Windows Vista, and is available for download for Windows XP. The same library can be used with the old indexing service of Windows 9X/ME/200X.

Why I am doing this...

Because I like to find my libraries when I need them. Over the years I have created literally thousands of units and sometimes it just takes a while to find a simple helper function I have written back then... The Windows Desktop Search is great, when you feed it with optimized data. This is what I am going to do for your Pascal/Delphi files.

Does this really work...

You remember ever searching your files and not finding them, though you just know they are there. Well, this is because the Indexing service needs to be told what to index, where to index and how to index. Once you do this, yes, it works, always! I am going to help you with the what and the how for the Pascal files. You just have to determine the where.

How a plan to implement the idea (for now)...

I simply thought I'll parse the interface part of all units (all parts for .dpr and .inc files) and index the name of all classes, types, methods, functions, procedures, properties, constants, variables as keywords. Further I would index the whole declaration of those as well as comments for full-text search.

This way you can search the declarations and the comments of your files on the fly and literally instantly.

How would you implement the idea...

What else should I index - or how should I index those data? Any comments, ideas, etc. are very welcome. I'll plan to release the first beta in January. So let me know what you want.

Thanks for reading, now send me a message ;-)

 

Sunday, December 23, 2007 4:47:09 PM (W. Europe Standard Time, UTC+01:00) #    Comments [8]  | 

 

I am looking for a basic (or good) Delphi lexer#

Well, I know about DGrok, which seems to be a great tool. However, it is written all in C# and therefore all in .NET only. For a upcoming project, which I want to make open source once finished, I need a lexer, which is written in native Pascal/Delphi. It does not need to be perfect, however, it should return all data of the interface part in units, and it should analyze Delphi-PRAXiSR-Files as well.

The lexer (maybe a simple parser suffices) must be open source and come with just about any license out there, though I prefer MPL over (L)GPL any day.

Anyone with a good hint out there? Thanks!

P.S.: Merry Christmas and a happy new year.

Saturday, December 22, 2007 4:10:15 PM (W. Europe Standard Time, UTC+01:00) #    Comments [5]  | 

 

More on the Zoom and SuperZoom#

My last post was on the Zoom-Feature of the Delphi 2007 IDE. During the last hours I played around a little with it. One of the comments mentioned the option SuperZoom, which is even nicer. However, in a multi-monitor setup, SuperZoom always places the editor on the main monitor, which is not always the one I want to work on. So, it is nice to have, but I'll stay with the Zoom option for now, this one works as expected.

Thursday, December 13, 2007 12:25:17 PM (W. Europe Standard Time, UTC+01:00) #    Comments [2]  | 

 

Full Screen Editor in Delphi 2007 IDE#

Alfonso, a member of the Delphi-PRAXiS has seen an undocumented feature in an presentation and shared it with the community. Since many of you don't read the German forum or may just miss it in the wealth of information flowing through the Delphi-PRAXiS, here is a very nice registry hack.

Navigate to your registry key [HKEY_CURRENT_USER\Software\Borland\BDS\5.0\Editor] and create a string entry with the name Zoom and the Value Zoom.

Now, when double clicking on the tab of the editor it will go to the full width of your screen. Nice feature!

Sorry that I write only rarely lately, but this is due to me doing lots of web development during the last weeks and will change after the holiday season, again.   

Wednesday, December 12, 2007 12:51:41 PM (W. Europe Standard Time, UTC+01:00) #    Comments [5]  | 

 

Way to go, CodeGear#

I know, it is a little late, but last week was stuffed with work and I did not have time to blog anything. So, all I wanted to say "Well done, CodeGear," thanks for making CodeRage II free.

Now folks, it is time for a real life conference from CodeGear - yes, we are willing to pay for that and yes, it costs much more than USD 150 for a online conference, but it is all about the face-to-face meetings...

Anyway, you all have fun attending CodeRage. Next week I'll use to prepare my Delphi CodeCamp session on Windows Vista, write a few articles and do more web development. Then I'll continue working on my localization solution, which I am going to present at the EKON Spring 2008 edition, so stay tuned, much stuff coming up soon...   

Sunday, November 25, 2007 9:10:08 PM (W. Europe Standard Time, UTC+01:00) #    Comments [0]  | 

 

More on SmartInspect#

I did not get around to write more on comparing SmartInspect and CodeSight, though there are a few more things I want to name here - so stay tuned on that. However, if you are interested in learning more about SmartInspect, join me...

I will talk about SmartInspect at the upcoming EKON 12 Spring, next February in Frankfurt/Germany. In this session I will show you how to use SmartInspect in your applications, how to pass objects, how to inspect and watchs values over time, and most importantly give you a strategy on how to implement it into an already existing application - like an afterthought. But be warned, planing to use such a tool upfront is more sensible ;-)

Track description (in German)

Sunday, November 25, 2007 8:55:31 PM (W. Europe Standard Time, UTC+01:00) #    Comments [0]  | 

 

Creating your own interactive Welcome Page#

Often, I am asked how to implement something similar to the CodeGear RAD Studio (aka BDS) Welcome Page. Well, to be honest, I didn't know myself. All I have done for Borland/CodeGear so far, was implementing the whole HTML and JavaScript side, as well as XML and XSL. But this is all open source, and can be found in the $(BDS)\Welcomepage folder. No big secrets here.

Sample application acting on button click in HTML
Sample application acting on button click in HTML

But what you really want to know is, how to give HTML/JavaScript access to your application or how to implement your own URL, such as bds:/default.htm. Well, I took the time and investigated just that, today. And let me tell you, it is easy, once you know where to look. You need to know two interfaces:

  • ICustomDoc - allows you to assign your own document handler for the web browser instance
  • IDocHostUIHandler - allows you to return an interfaced object, that will be accessible from JavaScript and to manipulate the URL requested (as well as many other functions)

First, let me give you the interface declarations, you need:

type
  PDOCHOSTUIINFO = ^TDOCHOSTUIINFO;
  TDOCHOSTUIINFO = record
    cbSize: ULONG;
    dwFlags: DWORD;
    dwDoubleClick: DWORD;
    chHostCss: POleStr;
    chHostNS: POleStr;
  end;

  IDocHostUIHandler = interface(IUnknown)
    ['{bd3f23c0-d43e-11cf-893b-00aa00bdce1a}']
    function ShowContextMenu(const dwID: DWORD; const ppt: PPOINT; const CommandTarget: IUnknown; const Context: IDispatch): HRESULT; stdcall;
    function GetHostInfo(var pInfo: TDOCHOSTUIINFO): HRESULT; stdcall;
    function ShowUI(const dwID: DWORD; const pActiveObject: IOleInPlaceActiveObject; const pCommandTarget: IOleCommandTarget; const pFrame: IOleInPlaceFrame; const pDoc: IOleInPlaceUIWindow): HRESULT; stdcall;
    function HideUI: HRESULT; stdcall;
    function UpdateUI: HRESULT; stdcall;
    function EnableModeless(const fEnable: BOOL): HRESULT; stdcall;
    function OnDocWindowActivate(const fActivate: BOOL): HRESULT; stdcall;
    function OnFrameWindowActivate(const fActivate: BOOL): HRESULT; stdcall;
    function ResizeBorder(const prcBorder: PRECT; const pUIWindow: IOleInPlaceUIWindow; const fRameWindow: BOOL): HRESULT; stdcall;
    function TranslateAccelerator(const lpMsg: PMSG; const pguidCmdGroup: PGUID; const nCmdID: DWORD): HRESULT; stdcall;
    function GetOptionKeyPath(out pchKey: POleStr; const dw: DWORD): HRESULT; stdcall;
    function GetDropTarget(const pDropTarget: IDropTarget; out ppDropTarget: IDropTarget): HRESULT; stdcall;
    function GetExternal(out ppDispatch: IDispatch): HRESULT; stdcall;
    function TranslateUrl(const dwTranslate: DWORD; const pchURLIn: POleStr; out ppchURLOut: POleStr): HRESULT; stdcall;
    function FilterDataObject(const pDO: IDataObject; out ppDORet: IDataObject): HRESULT; stdcall;
  end;

  ICustomDoc = interface(IUnknown)
    ['{3050f3f0-98b5-11cf-bb82-00aa00bdce0b}']
    function SetUIHandler(const pUIHandler: IDocHostUIHandler): HRESULT; stdcall;
  end;

Once you figured those out, the rest is straight forward. Create a new VCL application and place a TWebBrowser component on your form. Before you can assign your own object (in the sample, it is the form itself) you have to load some document. I recommend loading about:blank, that is fast and works always.

procedure TForm8.FormCreate(Sender: TObject);
begin
  // initialize web browser
  wbbDisplay.Navigate('about:blank');
  while wbbDisplay.Busy do
    Application.ProcessMessages;

  // we have to handle some Interface requests, register this form as IDocHostUIHandler
  (wbbDisplay.Document as ICustomDoc).SetUIHandler(Self);
end;

Implement the IDocHostUIHandler interface in your form. Next you need to implement two methods:

  • GetExternal - allows you to return an interfaced object (IDispatch), which you can access from JavaScript
  • TranslateUrl - allows you to manipulate the URL before the web browser will attempt to load the file
  • Return for all other methods either E_NOTIMPL or S_FALSE according to MSDN documentation.
function TForm8.GetExternal(out ppDispatch: IDispatch): HRESULT;
begin
  ppDispatch := TMyApp.Create as IDispatch;
  Result := S_OK;
end;

function TForm8.TranslateUrl(const dwTranslate: DWORD; const pchURLIn: POLESTR; out ppchURLOut: POLESTR): HRESULT;
var
  NewURL: WideString;
begin
  if WideSameText(Copy(pchURLIn, 1, 6), 'app://') then
  begin
    NewURL := ExtractFilePath(Application.ExeName) + Copy(pchURLIn, 7, MaxInt);
    if NewUrl[Length(NewURL)] = '/' then
      SetLength(NewUrl, Length(NewUrl) - 1);
    ppchURLOut := POLESTR(NewURL);
    Result := S_OK;
  end
  else
  begin
    Result := S_FALSE;
  end;
end;

Now, you need to add a type library to your project. Once done, add an automation object (not COM-Object) to your application. This object you will return from the method GetExternal (see above, TMyApp there). Implement your methods as needed and you are done. In the code above, the application will change all URLs starting with app:// to load the files directly from the application folder. For some reason, web browser seems to add an additional slash (/) to the file requested, which has to be removed (see code TranslateUrl).

From JavaScript, you call your applications interfaced object by using the external. statement. If you name your method TestMe, you call it with external.TestMe(); from JavaScript.

That's it already. The sample projected can be downloaded (ZIP, 280 Kb).

Monday, November 12, 2007 6:20:28 PM (W. Europe Standard Time, UTC+01:00) #    Comments [0]  | 

 

CSS: Have A Real Page Footer#

Often we are challenged in life, especially when it comes to web page design. And when you want to have something "normal" as a page footer, which will always display at the bottom of the page, but never before the end of the content, you are running into THE short coming of the CSS definitions.

It is simply not designed to fit this need. However, one smart guy found a working solution, at least as long as you have a defined height for it.

Well, here you go, use it in your ASP.NET projects :)

Monday, November 12, 2007 11:19:23 AM (W. Europe Standard Time, UTC+01:00) #    Comments [0]  | 

 

Security fixes for OpenSSL with Indy Libraries#

Arvid Winkelsdorf of the digivendo GmbH has published on the Delphi-PRAXiS a security patch for using OpenSSL with the Indy libraries. The original source code has some quiet dangerous buffer overflow security risks. He allowed me to post them here, so that you can get them without having to register at the Delphi-PRAXiS.

Short Installation Instructions

Copy header files into your programm folder to ensure use of the Delphi compiler. Rebuild your project. Copy the files libeay32.dll and libssl32.dll (old name ssleay32.dll) into your application folder.

Since Indy 9 and Indy 10 are differently structured, you have to rename either IdSSLOpenHeaders9.pas or IdSSLOpenHeaders10.pas in IdSSLOpenHeaders.pas to make the fix work. Both files are in the download package.

Arvid will probably start his own blog soon and will support the Indy team in this specific area. Let's see what he will do to support us Indy-lovers. Thanks Arvid.

Download Patch (ZIP, 800 Kb)

Friday, November 09, 2007 11:49:45 AM (W. Europe Standard Time, UTC+01:00) #    Comments [0]  | 

 

Windows Vista - Quick Run as Admin#

Most of you now about the User Account Control system of Windows Vista by now. And most of you know, that you can start any application as admin when right clicking it in the list of the start menu.

However, there is a faster way, if you know te name of the executable, such as cmd. Simply, enter the name of the executable file into the Windows Vista search bar (of the start menu) and press [CTRL]+[SHIFT]+[RETURN], and it will be started with administrative rights. I use it for cmd all the time.

Wednesday, November 07, 2007 3:10:31 PM (W. Europe Standard Time, UTC+01:00) #    Comments [0]  | 

 

Running 16 bit applications on Windows Vista...#

I was long-time under the impression that you cannot run 16 bit applications on Windows Vista, except when using some VM software. However, while preparing a session coming up next month, I started my VM running Windows 3.11 with Delphi 1 - just for fun - and started the compiled application on my Vista machine.

What would you expect? Some error message... no, at least not on Windows Vista 32 Bit editions. The application run just as well. However, when starting the application on Windows Vista 64 Bit, you get an error message telling you to check with the software vendor for an updated 32- or 64 Bit version of the software.

Well, it doesn't bother me really any more, as I don't use 16 Bit apps or, even worse, write any. However, I thought it is funny when reading everywhere that they will not work at all. At least that is not true all the way (yet).

Friday, November 02, 2007 1:42:51 PM (W. Europe Standard Time, UTC+01:00) #    Comments [3]  | 

 

UTF-8 and Delphi - the big Unknown...#

Looking through the logs of my blog, I have noticed a high traffic regarding UTF-8 since my post on sending UTF-8 Emails using Indy. So I thought I mention a great library for converting all sorts of string formats from and to each other. I am using the Unicode library from Ralf Junker since quiet a few years and never had any trouble with it. I comes with good updates on a regular basis. With a price tag of 60 Euros with source code (20 Euros without the source code) it is a fair (should I say cheap?) price.

Another great library he offers is his Perl RegEx library. By far the most flexible solution for Delphi applications and very close to the Perl RegEx 5.10 standard. Check it out, the price tag is very similar to that of the Unicode library (75 and 25 Euros).

Friday, November 02, 2007 10:19:34 AM (W. Europe Standard Time, UTC+01:00) #    Comments [1]  | 

 

EKON 12 Topics#

Well, I just wanted to ask you guys, what topics would you like to hear about on EKON 12 Spring - currently I am at submitting my proposals for the conference and there is still some room left for one or two sessions to hand in. Anything specific you want to hear about?

Drop me a line, please and let me know.

Monday, October 29, 2007 1:36:30 PM (W. Europe Standard Time, UTC+01:00) #    Comments [0]  | 

 

Sending Emails with Indy (UTF-8)#

The other day I was a little dumbfounded. One of our systems is doing all string work using WideStrings and based on UTF-8, currently the probably best choice for international web sites. However, when sending Emails we depend on the Indy component library. Well, this worked pretty well until one customer decided to send e-mails in greek. Having been there this year, I realized the question marks all over the incoming e-mails where not what greek looks like ;-)

Upon investigating the source of the problem, I quickly realized that the Indy component library is still using the good old string type all over the place. Using UTF-8 and WideString everywhere I did never have to convert them to the standard Delphi string ever, but now I had too. I just did not know how to, there are quite a few functions that take a WideString and return an (Ansi)string. But which is right? Well, I asked Olaf Monien, one of the big supporters of the Indy component library to help me out.

The correct function to use is UTF8Encode. Thank you. Using TIdMessage, you have to set the CharSet property to 'UTF-8' as well. Due to a bug in plain text messages, you have to set the ContentType property to 'text/plain; CharSet=UTF-8' as well. I am sure, Olaf will check in some fix rather soon.

Sunday, October 28, 2007 3:14:23 PM (W. Europe Standard Time, UTC+01:00) #    Comments [0]  | 

 

Delphi Code Camp - Windows Vista#

Vom 3. - 5. Dezember macht das Delphi Code Camp seinen ersten Stop in München. An drei Tagen erhalten Sie von drei Speakern viele Tipps und Tricks rund um die Softwareentwicklung mit der CodeGear Delphi IDE. Ich werde Sie am ersten der drei Tage durch die Änderungen von Microsoft Windows Vista führen und Ihnen näher bringen, was sich durch Microsofts neuestes OS für Ihre Software ändert.

Dieser Kurs bringt Ihnen als Delphientwickler das neue Betriebssystem Windows Vista näher. In Windows Vista hat Microsoft einige Spielregeln verändert, die man kennen sollte, damit auch die eigene Software problemlos funktioniert.

Sie erhalten alle Informationen, die Sie benötigen, um Ihre Software schnellstmöglich einsatzbereit für Windows Vista zu gestalten. Gleichzeitig können Sie die Software auch so gestalten, dass Sie neue Features von Windows Vista nutzen können, ohne den Nutzer zum Umstieg zu zwingen.

Agenda

09:30 – 10:00 Einführung in Windows Vista aus Sicht eines Entwicklers (Win32/64 vs. .NET 2.0/3.0)
10:00 - 10:45 Softwarekompatibilität unter Windows Vista testen, Virtualisierungen von Dateisystem und Registry, Signierung von Anwendungen und der WinQual-Service von Microsoft
10:45 – 11:00 Pause mit Erfrischungen und Snacks
10:00 – 11:30 Windows Vista Ready Applikationen (älteren Delphi-Versionen vs. Delphi 2007)
11:30 - 12:30 Windows Vista Benutzerkontensteuerung (UAC), Anwendungslevel verstehen und implementieren
12:30 – 13:30 Mittagessen
13:30 – 14:15 Administrative Tasks starten
14:15 - 15:30 Windows Desktop Search nutzen und unterstützen
15:30 - 15:45 Pause mit Erfrischungen und Snacks
15:45 - 16:30 Windows Vista Application Recovery
16:30 – 17:00 Windows Vista Task Dialoge
17:00 - 17:30 Diskussion sowie Q&A

Weitere Informationen entnehmen Sie bitte der offiziellen Webseite zum CodeCamp.

Sunday, October 28, 2007 3:03:51 PM (W. Europe Standard Time, UTC+01:00) #    Comments [0]  | 

 

Delphi Code Camp on tour#

The Entwickler Akademie presents the Delphi-CodeCamp in Munich from December 3rd through 5th. Three days compact information on Delphi development for Windows Vista (3rd, me), Rave Reporting (4th, Thomas Pfister) and Web Development (5th, Olaf Monien). All courses will be held in German.

For more information read the Code Camp page or check my German section of the blog in a few days for detailed information on my track!

Wednesday, October 24, 2007 1:06:18 PM (W. Europe Standard Time, UTC+01:00) #    Comments [0]  | 

 

QC Plus is released#

Whohooo! Jeremy North has released QC Plus 1.0, finally. I have worked with various beta versions in the last months and it has come a long way since his last official release. If you ever consider helping to improve any of the CodeGear products, you should log bugs into QualityCentral and the best tool around is QC Plus ;-)

Thanks Jeremy for all your time, I hope they will compensate you for your work. Great job done!

Monday, October 15, 2007 5:10:43 PM (W. Europe Standard Time, UTC+01:00) #    Comments [0]  | 

 

How to retrieve a list of OU Objects and their parents#

One user of the Delphi-PRAXiS asked, how to retrieve a list of either users or computers with the creation date, name and parents name. Since I had those information available, I just thought I post it here as well. Once again, you simple have to query the active directory using ADO. For the parent however, you need to get the object and then query its Parent property.

procedure TYourForm.btnSearchClick(Sender: TObject);
var
  Conn: _Connection;
  Cmd: _Command;
  RS: _Recordset;
  Affected: OleVariant;
  Line: string;
  Obj: IADsUser;
  procedure RunQuery(Query: string);
  begin
    Cmd.CommandText := Query;
    // run query and return domain list
    RS := Cmd.Execute(Affected, EmptyParam, 0);
    if RS.EOF then
      Exit;
      
    RS.MoveFirst;
    while not RS.EOF do
    begin
      try
        Obj := VBGetObject(RS.Fields.Item[1].Value) as IADsUser;
        Line := Format('%s, %s, %s, %s', [RS.Fields.Item[0].Value, RS.Fields.Item[1].Value, RS.Fields.Item[2].Value, Obj.Parent]);
        mmoReport.Lines.Add(Line);
      except
      end;
      RS.MoveNext;
    end;
  end;
begin
  mmoReport.Clear;

  // create objects
  Conn := CoConnection.Create;
  Cmd := CoCommand.Create;
  // setup objects
  Conn.Provider := 'ADsDSOObject';
  Conn.Open('Active Directory Provider', '', '', 0);
  Cmd.Set_ActiveConnection(Conn);
  Cmd.Properties.Item['Page Size'].Value := 1000;
  Cmd.Properties.Item['Searchscope'].Value := ADS_SCOPE_SUBTREE;

  RunQuery(edtQuery.Text);
end;

Once again, the whole sample is available for download (ZIP, 36 Kb).

Monday, October 15, 2007 1:17:13 PM (W. Europe Standard Time, UTC+01:00) #    Comments [0]  | 

 

How to get a list of Domains and Sites#

Someone asked on delphifeeds.com, how to get a list of all domains within an environment. Since I was going to need just the same soon for a application in development right now, I thought I take up the challenge and try my luck. After using Google I found nil solutions using Delphi, so I went to microsoft.com and looked how they do it, using VBScript.

Well, I was lucky and found a solution, but as so often, getting it to work on Delphi is an entirely different task. First you have to find the root naming context of the domain where your application is running. You use the ADs library for that task. From that LDAP-path you replace the prefix with GC, which stands for global catalog.

// get the forest base
try
  DirObj := VBGetObject('LDAP://rootDSE') as IADs;
  Root := (VBGetObject('LDAP://' + DirObj.Get('rootDomainNamingContext')) as IADs).ADsPath;
except
  mmoReport.Lines.Add('Computer is not running in domain setup.');
  Exit;
end;
// replace LDAP with GC (global catalog)
Root := 'GC' + Copy(Root, 5, MaxInt);
mmoReport.Lines.Add(Root);

Next, you query the AD using ADO for the domains or sites, whatever you want. The queries are simple:

Query := 'SELECT Name FROM ' + QuotedStr(Root) + ' WHERE objectCategory=''domain''';
Query := 'SELECT Name FROM ' + QuotedStr(Root) + ' WHERE objectCategory=''site''';

Next, you just iterate the record set, returned after executing your command. A full demo can be downloaded (ZIP, 34 Kb) from my site.

Monday, October 15, 2007 10:48:02 AM (W. Europe Standard Time, UTC+01:00) #    Comments [0]  | 

 

More on Aero-glass and Delphi forms#

Since I just mentioned the Glow Label component for Delphi, I thought I mention a small problem with the glass effect and components placed on areas, where this effect is applied.

The (usually) black parts of the component are not painted correctly, when leaving all settings on default. You have to set the property DoubleBuffered to True, for correct painting of the components. Therefore, I have created a small routine which just does that. Simply pass along the form as parameter, an it will iterate through all controls and set their DoubleBuffer property to True.

procedure DoubleBufferAll(WinControl: TWinControl);
var
  I: Integer;
begin
  if not (WinControl is TBaseVirtualTree) then
    WinControl.DoubleBuffered := True;
  for I := 0 to WinControl.ControlCount - 1 do
    if WinControl.Controls[I] is TWinControl then
      DoubleBufferAll(WinControl.Controls[I] as TWinControl);
end;

Friday, October 12, 2007 1:04:03 PM (W. Europe Standard Time, UTC+01:00) #    Comments [1]  | 

 

Windows Vista Aero - TGlowLabel#

I just thought I mention a small and free control offered by one of our members of the Delphi-PRAXiS. The TGlowLabel inherits from TCustomLabel and gives your label a "shine" on your aero-glass-form. It features:

  • Glow property
  • resizable background to fit glow
  • compatible with TntUniCode-controls
  • Requires CodeGear Delphi 2007 for GlowForms (or one of the many Aero-hacks found in the Delphi-community)

The web site is in German, but you should find the download link without any problems.

Have fun.

Friday, October 12, 2007 12:46:30 PM (W. Europe Standard Time, UTC+01:00) #    Comments [0]  | 

 

Delphi Language - Did you know#

Did you know that all Delphi streams automatically support persisting/loading components, just as the IDE uses it? While looking today how again to persist a component state, I came across the methods WriteComponent and ReadComponent. I honestly never saw those before. Therefore persisting a component into a stream is just one line, when you want to have the data in text form, simply use ObjectBinaryToText and ObjectTextToBinary for the transformations. Great, how easy life can be. This method works fo published properties only, but most often this will do just fine.

// code to stream component state to file
FileStream := TFileStream.Create(Filename, fmCreate); 
BinStream := TMemoryStream.Create;
try
  BinStream.WriteComponent(YourComponent);
  BinStream.Position := 0;
  ObjectBinaryToText(BinStream, FileStream);
finally
  BinStream.Free;
  FileStream.Free;
end;

// code to load component streamed component from file
FileStream := TFileStream.Create(Filename, fmOpenRead);
BinStream := TMemoryStream.Create;
try
  ObjectTextToBinary(FileStream, BinStream);
  BinStream.Position := 0;
  BinStream.ReadComponent(YourComponent);
finally
  BinStream.Free;
  FileStream.Free;
end;

As a note, I am sure, I knew this before as I have done that a few years ago already, but hey, sometimes you just forget and rediscover and you are happy again...

Tuesday, October 09, 2007 4:01:39 PM (W. Europe Standard Time, UTC+01:00) #    Comments [6]  | 

 

More on Vista Task Dialogs (JSDialog)#

In my last entry on Vista Task Dialogs I asked whether one should use them on older systems (Windows XP, 9X, 2000, ...) as well, since their look is just different and unknown to the user. Jeremy North posted (may be biased ;)), that he would say yes. Many others said so too, since they perform for the end user much better, then a simple "Yes, No, Cancel Dialog."

However, most components will either work on Vista only (native RAD Studio) or always will display in the nice Vista style, which however, the rest of the application will not. Jeremy North pointed out, that his components support a global variable/setting to change this behavior and allow to display on the "old style." This works nicely and I think answers for me the question whether to use them in my applications or not. Thanks for the Hint, Jeremy, I am not so good at reading documentation...

Simply add the following code to your application to switch to the old "Windows style" display. This checks for Windows Vista and sets the variable accordingly. See below for the result running on Vista vs. Windows XP.

JSDialog.UseOldDialogStyle := SysUtils.Win32MajorVersion < 6;

JSDialog - Vista Task Dialog in Vista Style
JSDialog - Vista Task Dialog in Vista Style

JSDialog - Vista Task Dialog in older Windows Style
JSDialog - Same Vista Task Dialog in older Windows Style

Monday, October 08, 2007 1:49:18 PM (W. Europe Standard Time, UTC+01:00) #    Comments [4]  | 

 

Delphi IDE - Did you know#

I thought I simlpy join the group of guys who let you know one of their favorite functions in the IDE. One I especially like is the column-selection mode, where you can select a rectangle field for copy/delete/etc.

Sample of column selection

Press [Alt]+[Shift]+[Cursor] key to start column selection mode. This mode stays enabled as long as you do not change back. To change back to the defaut selection mode, press [Ctrl]+[O]+[K], which in fact is what many really want to know, since sometimes you enter column selection mode without wanting too. ;-)

Monday, October 08, 2007 1:19:30 PM (W. Europe Standard Time, UTC+01:00) #    Comments [6]  | 

 

Do you remember 1995...?#

Do you remember one of the first official demos given with Delphi? Yes, great... no, well take a look at the video below, I just created. And the developer world was stunned how easy something could be...


Download full size video (2.5 MB)

And who creates the video using Windows Vista (boot & shutdown) and RAD Studio 2007?

Saturday, October 06, 2007 9:52:36 PM (W. Europe Standard Time, UTC+01:00) #    Comments [0]  | 

 

The Vista Task dialog components, use them everywhere?#

By now everyone who deems himself at least a medium level programmer for Windows applications, should have at least looked at Windows Vista. And while you toyed around with it, you probably have seen the new Windows Vista task dialogs.


Windows Vista Taks Dialog

Personally, I do really like them. They are clear, tell the user what problem was encountered and gives well explained options. Yes, I know, the good content part still depends on the developer, but you should get the meaning without to much picking at me ;-)

Now, there are many components out there, and the best around is from Jeremy North, called TJSDialog. It supports all Windows Vista features, as well as a few more carefully selected ones. So, if you target Vista users, this component is at least worth looking at.

However, I ask myself something else. While components like Jeremy's allow us to display those dialog types on Windows 9X/XP/... should we as programmers do just that? Those dialogs come with Windows Vista and Vista users will get used to them, as they see them more and more all over their system. But now let's think about our granny, finally getting used to her good old Windows XP and now your application comes along with a totally new style for dialogs. She doesn't know this style, and probably she just thinks: What's that?! So, what do you think, should our applications use the Vista style dialogs on older system, just because they do look good? Is it worth it creating every dialog twice, ...? I am not sure myself. And don't misunderstand me, I really think the new style dialogs are simply great, but shouldn't we keep them to Vista where the user knows what hits her (or him)?   

Saturday, October 06, 2007 3:02:51 PM (W. Europe Standard Time, UTC+01:00) #    Comments [6]  | 

 

SmartInspect vs CodeSite - Round 1#

Well, I created a rather simple project to compare basic speeds of both loggers agains each other. Let me give you the result upfront:

1 vs. 1

Let's take a look why this first combat ended even. SmartInspect, imo has the more logical base settings applied to the viewer. In this case I prefer auto-scrolling for the log turned off. This generally speeds up both clients a lot when many messages are coming in. When auto-scrolling is on, the SmartInspect viewer performs much better than the CodeSight viewer. While SmartInspect updates the autoscroll every few milliseconds (let's say maybe 10 times per second), CodeSite updates the list with every message. With 4500 messages coming in about two seconds, CodeSite will take it's time to update the list, while SmartInspect does not really loose performance whether auto-scroll is turned on or not.

Okay, so on the view side, SmartInspect wins outright. Let's take a look at the application you are writing, the one which implements the logging classes. Here you have to know how both applications are working. For now, we are looking at the "live logging" on the same machine.

CodeSite uses Windows Messages when logging to send the data from your application to the logging application. SmartInspect uses its own TCP protocol. CodeSite needs a dispatcher application running, which the dispatches the data sent from your application to the log viewer, SmartInspect sends those data directly to the viewer. Just as note: both systems allow for file logging and other targets just as well.

Due to using Windows Messages the sending of the messages works asyncronous for CodeSite, therefore your application has almost no performance hits when logging. The application sends its message and goes on without caring whether the logging application has processed it, or not. SmartInspect performs a little less good on this side, your applications sends its data via TCP to the logger and waits until the data are processed. On the other hand, whatever happens in your application, SmartInspect shows it on-time in the logger, while CodeSite may take much longer, since it is processing all messages async.

However, when logging is disabled (default for SmartInspect), both system performances are equally good and almost unnoticable from within your application, therefore, once you inserted logging code into your application, leave it in your code, you may need it later.

Last a screen shot showing both loggers (SI left, CS right) and the test applications, which you may know from somewhere ;-) The modified threading samples are ready for download (13 Kb), however, you need the respective tools for using them. Click the image below for a full size version (700 Kb).


SmartInspect (left) and CodeSite (right)

Saturday, October 06, 2007 2:13:32 PM (W. Europe Standard Time, UTC+01:00) #    Comments [2]  | 

 

SmartInspect - I should have known ;-)#

A few days ago, I blogged about CodeSite, a nice logging software from Raize Software. The next day I got an e-mail from Dennis of Gurock Software, yes that's those guy who created DelphiFeeds.com, telling me about SmartInspect. Now I have a problem. Both tools are great, however, which is the better one. I mailed a few times with Dennis and we talked about SmartInspect and his view about both products. My feelings so far are, that he is right. SmartInspect really performs good.

Using both tools in code, they work mostly the same. Both come with code templates for the newer Borland/CodeGear IDEs and the calls are fairly similar. However, in the background, both tools are going their own unique ways and I'll have to check out performance for both tools.

Looking at the logging-tools: on a first look, CodeSite looks more stylish, however SmartInspect seems to be organized better. I am already seeing my current project being pushed back one or two weeks, while I have to evaluate which of those two tools is going to make it into the production code.

Coming a way as probably most of you, with simple logging to text files, both tools are simply stunning. I am just wondering why I never thought about such solutions earlier. But those tools are great, where ever you are coming from. I'll post a few test results over the coming days and let you know which tool I am going to use in current and future projects.

Stay tuned! Logging is the way to go ;-)

Friday, October 05, 2007 4:00:26 PM (W. Europe Standard Time, UTC+01:00) #    Comments [2]  | 

 

Inside of RAD Studio Welcome Page#

Though it is a few weeks old, I found a question on DelphiFeeds.com asking where the Welcome Page saves its data, especially the favorites list.

Well, it is fairly simple and it is in the place, where applications should save their data. For my RAD Studio 2007 installation on Windows Vista it is C:\Users\Daniel\AppData\Roaming\Borland\BDS\5.0. So, basically it is the application data folder for the current user.

The favorites are saved in the file myFavorites.xml.

Wednesday, October 03, 2007 9:10:03 PM (W. Europe Standard Time, UTC+01:00) #    Comments [0]  | 

 

Delphi-Tage 2008#

Die Planung der 4. Delphi-Tage hat begonnen. Wir wälzen derzeit einige neue Ideen, haben weitere im Hinterstübchen, überarbeiten die Alten. Hast Du Ideen oder Wünsche, gibt es etwas, das Du uns wissen lassen willst. Dann sende mir eine Email und ich werde diese ans Organisationsteam weiterleiten. Willst Du uns helfen, lass es mich wissen! Kennst Du einen Speaker, welchen Du auf den Delphi-Tagen sehen willst, lass es mich wissen! Gibt es ein Thema, welches Dich brennend interessiert, lass es mich wissen! Hast Du einen Vorschlag für einen Veranstaltungsort, lass es mich wissen!

Kurz gesagt: lass es mich wissen!

Wednesday, October 03, 2007 5:27:42 PM (W. Europe Standard Time, UTC+01:00) #    Comments [0]  | 

 

German Delphi Days 2008#

The planing of the next Delphi Days has started. Some new ideas have come up, some are still in the back of our minds, some old ideas will come back. Do you have any ideas or wishes, is there anything you want to tell us? Well, drop me a message and I'll make sure to pass it along. Do you want to help us, let me know! Do you have a speaker you would like to see, let me know! Do you have a topic you want to hear about, let me know! Do you have a suggestion for a location this year, let me know!

In short: let me know!

Wednesday, October 03, 2007 5:24:37 PM (W. Europe Standard Time, UTC+01:00) #    Comments [0]  | 

 

A new Delphi blog is online#

Daniel Magin, one of Germanies best known Delphi evangelists has started his new blog a few days ago. It seems to focus on Delphi for most posts and he writes in English, so you may want to have a look every now and then. Quote from his opening post:

This is my new blog about what happens in my world. Sorry first for my not 100% perfect english. My motther language is Germany, but i like to blogg in english. I work for better office and also as CodeGear Associated Evangelist in the world of Delphi, Interbase and the ASP.net World.
Wednesday, October 03, 2007 2:59:40 PM (W. Europe Standard Time, UTC+01:00) #    Comments [0]  | 

 

EKON X und DevTracks Unterlagen als Download#

Aufgrund von Nachfragen habe ich mich entschieden meine Unterlagen der EKON aus dem letzten Jahr und der DevTracks aus diesem Frühling zum Download bereit zu stellen. Die Vorträge beider Vorstellungen waren in Deutsch und für deutsch-sprachiges Publikum.

Auf der EKON X habe ich Vorträge zu .NET gehalten (ASP.NET Web Controls & Delphi and .NET 2.0)
Die DevTracks waren auf Delphi 2007 und Windows Vista Softwareentwicklung ausgelegt.

Die Unterlagen finden Sie auf meiner Conference Page als Downloads.

Wednesday, October 03, 2007 2:40:02 PM (W. Europe Standard Time, UTC+01:00) #    Comments [0]  | 

 

Old Papers for Download#

On Request I have decided to offer my EKON X papers (last year) and the DevTracks Spring Edition 2007 papers for download as well. Both papers where for a German audience, contain the PowerPoint slides as well as all samples shown.

At EKON X I focused on .NET development (ASP.NET Web Controls & Delphi and .NET 2.0)
The DevTracks were focused on Delphi 2007 and Windows Vista development.

The papers are on my Conference Page for download.

Wednesday, October 03, 2007 2:37:02 PM (W. Europe Standard Time, UTC+01:00) #    Comments [0]  | 

 

EKON 11 - Promised Entry #3#

One of the things promised, which are on the Internet somewhere, but sometimes hard to find, was a code snippet which reliably returns, whether the program is started in administrative mode or not. This piece of code is similar to old known solutions, however under Vista the old version returned the user level, rather than the token under which the program was started. The following code works well under Windows Vista and older systems.

const
  SECURITY_NT_AUTHORITY: TSIDIdentifierAuthority = (Value: (0, 0, 0, 0, 0, 5));
  SECURITY_BUILTIN_DOMAIN_RID = $00000020;
  DOMAIN_ALIAS_RID_ADMINS = $00000220;
  SE_GROUP_ENABLED = $00000004;

function IsAdmin: Boolean;
var
  hAccessToken: THandle;
  ptgGroups: PTokenGroups;
  dwInfoBufferSize: DWORD;
  psidAdministrators: PSID;
  x: Integer;
  bSuccess: BOOL;
begin
  Result   := False;
  bSuccess := OpenThreadToken(GetCurrentThread, TOKEN_QUERY, True, hAccessToken);
  if not bSuccess then
    if GetLastError = ERROR_NO_TOKEN then
      bSuccess := OpenProcessToken(GetCurrentProcess, TOKEN_QUERY, hAccessToken);
  if bSuccess then
  begin
    GetTokenInformation(hAccessToken, TokenGroups, nil, 0, dwInfoBufferSize);
    ptgGroups := GetMemory(dwInfoBufferSize); 
    bSuccess := GetTokenInformation(hAccessToken, TokenGroups, ptgGroups, dwInfoBufferSize, dwInfoBufferSize);
    CloseHandle(hAccessToken);
    if bSuccess then
    begin
      AllocateAndInitializeSid(SECURITY_NT_AUTHORITY, 2, SECURITY_BUILTIN_DOMAIN_RID, DOMAIN_ALIAS_RID_ADMINS, 0, 0, 0, 0, 0, 0, psidAdministrators);
      {$R-}
      for x := 0 to ptgGroups.GroupCount - 1 do
      begin
        if (SE_GROUP_ENABLED = (ptgGroups.Groups[x].Attributes and SE_GROUP_ENABLED)) and EqualSid(psidAdministrators, ptgGroups.Groups[x].Sid) then
        begin
          Result := True;
          Break;
        end;
      end;
      {$R+}
      FreeSid(psidAdministrators);
    end;
    FreeMem(ptgGroups);
  end;
end;

Thanks to Olaf for pointing out the insufficient memory problem. Fixed in this sample.

Tuesday, October 02, 2007 10:35:01 AM (W. Europe Standard Time, UTC+01:00) #    Comments [2]  | 

 

More on BlackFish SQL#

Actually, this time I just wanted to promote the website which will host the BlackFish WebConsole soon. As I have written before, it will be a free product which you can deploy to any server hosting the BlakFish SQL server. I was excited after first seeing a video on this tool and even more after seeing it demonstrated live.


Daniel, you do work in the dark!

Saturday, September 29, 2007 6:00:36 PM (W. Europe Standard Time, UTC+01:00) #    Comments [0]  | 

 

EKON 11 - Promised Entry #2#

The downloads are ready, you'll find my conference papers at my new Conference Page. There are no downloads for the CodeCamp session, as this was mainly a session for questions & answers on Delphi, Windows Vista & .NET. However, I have promised a few code snippets on this session, which will appear over the next days on my blog, though not before Tuesday, when I will be in my office next time.      

Saturday, September 29, 2007 5:55:57 PM (W. Europe Standard Time, UTC+01:00) #    Comments [0]  | 

 

CodeSite - would I have known...#

At the EKON I met Ray Konopka of Raize Software and he showed me his VCL component sets and their logging application CodeSite. WOW! Why didn't I know this application already, why didn't anyone tell me before? What a great tool for tracing your software, even on your clients computers when you are not there. When developing our content management system Content ACE, CodeSite would have helped in a great way when debugging sessions just could not get us there, especially when initially deploying our software to beta customers. I am surprised that CodeGear does not use it inside the Delphi tools development process.

I have toyed around with it yesterday and started today with inserting the first traces into my new software project which I will introduce later this year. While I have actually not yet done much tracing with it in the new software, I am already aware that it will help a lot when time comes. You should check it out!

The greatest thing about CodeSite, it works not only in native Delphi, but in C++Builder, Delphi.NET, C# and any other .NET language as well. With some tweaking, I am sure, you could use it in scripting languages as well - sure, first you have to create some ActiveX that hosts CodeSite, but this should be done easily enough. Might happen, that I'll do just that soon.

Saturday, September 29, 2007 5:50:30 PM (W. Europe Standard Time, UTC+01:00) #    Comments [0]  | 

 

System.pas fehlt im RAD Studio 2007 (Deutsch)#

Auch wenn es den regulären Betrieb vom RAD Studio nicht so beeinflusst wie es das Update #3 von Delphi 2007 tat, so fehlt sie doch manchmal, die gute alte System.pas. CodeGear hat einen kleinen Fix bereitgestellt, der die System.pas in wenigen Sekunden herunterlädt und der Installation nachschiebt ;-)

Trotzdem ist es aus meiner Sicht erschreckend, dass solche wichtigen Dateien einfach im Installer vergessen werden. Welche wohl noch?...

Thursday, September 27, 2007 3:57:22 PM (W. Europe Standard Time, UTC+01:00) #    Comments [0]  | 

 

Learning swimming with BlackFish SQL.NET#

Right now I am sitting at the EKON in Daniels lately announced session on BlackFish SQL .NET. While he talks about BlackFish and how to create fully managed assemblies which plug into the BlackFish database, which itself is fully managed, he also shows his software solution named BFWebConsole. BFWebConsole will enable you to administrate any BlackFish SQL .NET server remotely. The tool will be available in about two (let's say four) weeks for free from his (or his employees) website. Once it is out, I'll let you know, it is definitely worth a look! Folks inside CodeGear are stunned by his tool already, Steve S. wrote:

You work fast and in the dark. [...] Looks really nice.

I'll upload a picture from his presentation later today, as I cannot find my USB cable to plug in the card reader.

Thursday, September 27, 2007 10:14:58 AM (W. Europe Standard Time, UTC+01:00) #    Comments [0]  | 

 

On my way to EKON/EuroDevCon#

Well, all my papers are prepared and I just boarded the train from Munich to Frankfurt. While bying my ticket I realised that I have forgotten my BahnCard which allows my a 50% rabatte. Well, the conductor just passed and signed my ticket for this purpose, so I can go to the ticket office later and get my money back, at least most of it.

Yesterday evening I skyped Marco Cantú and asked him to save a copy of his new book for me, which he will do, so I am going to pick it up today, too. Great, I am interested to see what I have missed in the latest releases of Delphi. The IDE and the whole package is growing so fast, despite the recent ommissions such as C#Builder, that I know I have not seen everything just yet.

I'll write a short review of the book here as soon as I had the time to read through it, however this will take a few weeks as I just bought a few other technical books on a different matter, which I'll read first. Well, that's it for now, more later in the day.

Tuesday, September 25, 2007 5:06:32 AM (W. Europe Standard Time, UTC+01:00) #    Comments [0]  | 

 

EKON Conference Material#

After the Sessions at the EKON I will release the conference materials on my newly created conference page. I do hope that this page will fill over time, but here is a start. My sessions will be on Wednesday, so there is not much sense in going there just now, but I wanted this part to be ready, so here you go.

http://www.gumpi.com/Blog/Special.aspx?=Conferences

Monday, September 24, 2007 2:10:00 PM (W. Europe Standard Time, UTC+01:00) #    Comments [0]  | 

 

All content © 2010, Daniel Wischnewski
On this page
Windows 7 Components - Sorry
Windows 7 Components - Beta
Windows 7 Components and RAD Studio 2010 Logo
Delphi Controls for Windows 7 - State Update
Update for the Windows 7 Taskbar Components coming soon
Delphi Days 2009 in Hamburg (Pictures)
Review: SDN Event March '09
Insufficient key column information for updating or refreshing
Graphic Tablets and Delphi
Windows 7 - Displaying your applications status in the Windows Taskbar
Windows 7 - Displaying Progress of a Task in the Windows Taskbar
The fastest compiler taking forever
Alpha 1 of "Windows 7 Controls for Delphi"
Windows 7 Controls for Delphi
Windows 7 Jump Lists
Delphi Code Camp - September 2008
Pictures of the Delphi-Tage 2008
Save over 80% on Delphi - that is EIGHTY PERCENT - YES!!!
Starting BETA of our new product for HDR image generation
Delphi CodeCamp - Was würde Sie interessieren?
A little more on the TMS AdvToolBar components
TMS Software
About my last post...
VCL Ribbon Controls - There is no fully acceptable solution available, or...?
Delphi Win32 Project Localizer
More EKON Spring 2008 Papers
EKON Spring 2008 - Papers Online
BFWC has arrived - bless the day!
Parameters of NT Services
EKON Spring - Starts Today
EKON Spring - Thursday Session
Delphi Days 2008 - Germany, Austria, and Switzerland
DSDT is now Delphi-Treff
Your project does not have a type library...
Thank you for all you've done for us
Working with the Castalia Delphi Parser
Searching your Delphi files...
I am looking for a basic (or good) Delphi lexer
More on the Zoom and SuperZoom
Full Screen Editor in Delphi 2007 IDE
Way to go, CodeGear
More on SmartInspect
Creating your own interactive Welcome Page
CSS: Have A Real Page Footer
Security fixes for OpenSSL with Indy Libraries
Windows Vista - Quick Run as Admin
Running 16 bit applications on Windows Vista...
UTF-8 and Delphi - the big Unknown...
EKON 12 Topics
Sending Emails with Indy (UTF-8)
Delphi Code Camp - Windows Vista
Delphi Code Camp on tour
QC Plus is released
How to retrieve a list of OU Objects and their parents
How to get a list of Domains and Sites
More on Aero-glass and Delphi forms
Windows Vista Aero - TGlowLabel
Delphi Language - Did you know
More on Vista Task Dialogs (JSDialog)
Delphi IDE - Did you know
Do you remember 1995...?
The Vista Task dialog components, use them everywhere?
SmartInspect vs CodeSite - Round 1
SmartInspect - I should have known ;-)
Inside of RAD Studio Welcome Page
Delphi-Tage 2008
German Delphi Days 2008
A new Delphi blog is online
EKON X und DevTracks Unterlagen als Download
Old Papers for Download
EKON 11 - Promised Entry #3
More on BlackFish SQL
EKON 11 - Promised Entry #2
CodeSite - would I have known...
System.pas fehlt im RAD Studio 2007 (Deutsch)
Learning swimming with BlackFish SQL.NET
On my way to EKON/EuroDevCon
EKON Conference Material
Archives
Promoted Links
Blogroll OPML
My current Flickr Images
www.flickr.com
Dies ist ein Flickr Modul mit �ffentlichen Fotos und Videos von dwischnewski. Ihr eigenes Modul k�nnen Sie hier erstellen.
Recommendations
Sitemap
Special Pages
Disclaimer

The opinions expressed herein are my own personal opinions and do not represent my employer's view in any way.

Theme design by Jelle Druyts