Project 50 in Photography#

Most of you readers know, that photography is one of my hobbies. Being born in '77 and having real contact with cameras in the mid '90 for the first time, I am a kid of the zooms. I did not even really think about fixed focal lengths. In the last months I have read over and over, that using fixed focal lengths is the best that one can do to improve when taking photography a little more serious.

So searching I learned about the "nifty fifty" from Canon. Why am I writing that? Simply, if you own a Canon and want to learn more about it, think about getting this lens. It usually comes for less than 100 EUR/USD and is a very good glass for that money. Lot's of light and fairly good optics for less than any other SLR lens on the market.

Now, I have taken this step and started on a group on Flickr.com called "Project 50." They encourage you to take 50 photos using a 50mm prime lens. It is fun and it should teach you quiet a lot about photo composition. Below is the fourth photo I've published using the lens and I love it. What do you think?

Taking over...
Taking over... on Flickr.com

I am interested how I'll improve over the coming weeks toying around with that lens. I am already very interested in doing more prime lens photography. But new lenses will have to wait, since they usually are a lot more expensive than 99 Euro in a media market chain store ;-)   

English | Fun | Leben | Pictures
Friday, June 19, 2009 9:46:27 PM (W. Europe Standard Time, UTC+01:00) #    Comments [0]  | 

 

Google AdSense


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]  | 

 

Photos of the Months#

Well, I it has been quiet around this topic for some time. Finally, I have found the time to get back to it and while I have been busy in the last weeks, I took my camera with me almost anywhere I went. So, here are the two prime shots of those last two months.

February '09

Subway Marienplatz (U-Bahn Tunnel)
Subway Station Marienplatz, taken during the workers strike.

March '09

Step into the tidelands
Netherlands, tide lands. Taken during my visit for the SDN Event in March '09.

For more photos from this time, visit my Flickr Stream.

English | Fun | Leben
Monday, April 06, 2009 2:43:10 PM (W. Europe Standard Time, UTC+01:00) #    Comments [0]  | 

 

Windows Vista, UAC, Defender and Viruses...#

Well, I am back from the SDN Event in Driebergen. It was a fun event, I have met quiet a few people and, after a few years, finally met Dr. Bob again. One of my session was about the Windows 7 Taskbar (an update for the components is in the pipe line, btw). And when talking about Windows 7, one of the question coming up was the user account control (UAC) and how - IF - they have changed it.

While talking about that, I started out to remind them WHY it was implemented in Windows Vista and WHY I have not turned it off, ever. The reason is simple: it was implemented to block viruses from invading your computer and yes, it works. My story for them was as simple as it was obviously surprising for most of them sitting in the room.

About two years ago, I started a small experiment. I set up a computer with a new and clean Windows Vista install. Leaving the UAC on and running updates as Windows reminded me to do just that. The way a user should be working with the PC. However, I have not installed any third party Anti-Virus software, nor any third-party firewall, just the on-board tools Windows Defender and the UAC. I used this PC regularly for internet surfing, writing mails, doing some fun, testing software and so on. I let my girl friend use it for internet surfing - she knows how to use a computer, but by far, she is no geek, or even close to that. She does Excel, Word, mails online, games online, iTunes, etc. Even some peer-to-peer sharing. She had an administrative account and I explained to her what UAC meant and why it was implemented.

Well, end of last year I put on Norton AntiVirus, McAffee and a few other anti-virus tools and ran the big test: All tools reported the same final results: 0 viruses found!

Now my challenge to you: try that with Windows XP in todays Internet world ;-)

Conclusion: yes, the UAC is bothersome at times, and when it pops up to often, it will get the user aggravated, but it has its purpose. With Windows XP's on-board tools you simply where at a large risk when you went online. I am a believer of the UAC and, while it bothers me at times, I support it.

With Windows 7 it shows up less often. So some settings will be changed easier than under Windows Vista without the user confirming that. But as far as I have seen, none of the changes (except setting the computer time of course) will survive the next reboot of your computer. And if you don't mind, under Windows 7 you can move up the UAC messages to the Windows Vista level again. And yes, if you still mind, you can turn it off as well, but I know, I won't.   

Tuesday, March 31, 2009 10:27:56 AM (W. Europe Standard Time, UTC+01:00) #    Comments [5]  | 

 

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]  | 

 

More on the Scott Kelby Photo Walk#

I won the third price for the participants of the "Munich Photo Walk."

Mind your Step!

I am happy with this price since I could freely choose a book from the DPI selection of Addison Wesley Germany. I choose the "The Perfect Moment" (Der entscheidende Moment), a book by Scott McNally giving his tips for taking stunning photos. The book came yesterday during a seminar I gave. Now I have time to read it :-)

English | Fun | Leben | Pictures
Thursday, September 11, 2008 10:42:08 AM (W. Europe Standard Time, UTC+01:00) #    Comments [0]  | 

 

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]  | 

 

Scott Kelby's World Wide Photo Walk 2008#

This year I had the chance to participate in this first world wide photo walk event. While founded as a mean to advertise the sale of Scott Phelby's new book on LightRoom 2, the event was free for anyone to join it. We had lots of fun here in Munich. Below you see the photos that made my selection.

English | Fun | Leben | Pictures
Wednesday, August 27, 2008 6:39:35 PM (W. Europe Standard Time, UTC+01:00) #    Comments [0]  | 

 

Picture of the Month - July '08# #
This was a hard pick, but here we go. A few others are quiet interesting imo as well, but mostly for more personal reasons. So here I used simple physics to create a super macro lens - read at Flickr how ;-)

Good Morning, nice to see you... (Snail, Schnecke)

Saturday, August 02, 2008 3:58:55 PM (W. Europe Standard Time, UTC+01:00) #    Comments [0]  | 

 

Picture of the Month - June '08# #
I have noticed that I missed posting the images for June and July. So here we go with the photo of June. Taken in the Munich Zoo Hellabrunn on a nice Sunday. We made about 300 photos, but this is my favourite.

Lemur Katta Monkey (BW)

Saturday, August 02, 2008 3:55:26 PM (W. Europe Standard Time, UTC+01:00) #    Comments [0]  | 

 

Partial Solar Eclipse#
Yesterday, we had a partial solar eclipse in Munich. Sadly, at the maximum, the sun was blocked about 6% down here, but that is certainly better than nothing. So, I took the chance to learn a little bit more about photography and I'd like to show you my results.

Partial Solar Eclipse / Sonnenfinsternis

So this is the result, on of three pictures I've uploaded so far. Take a look and comment on them if you like ;-)

Btw, some post processing using FastHDR, coming soon to your computer ;-)

English | Fun | Leben | Pictures
Saturday, August 02, 2008 3:51:53 PM (W. Europe Standard Time, UTC+01:00) #    Comments [0]  | 

 

Color profiles for Print Jobs#

Today, while preparing a new layout for business cards, the print shop (I am using Print24.de since a few years) hinted that the data should be prepared using the ICC profile "ISO coated V2.0 ECI". However, they do not offer the ICE profile for download to adjust the color space within Photoshop/Illustrator.

Well, after using Google, I have found the homepage of the European Color Initiative (ECI). In their download section, they offer the download of the profiles for free. On your Window machine, simply unpack the ZIP file, right-click on the ICC files in the Windows Explorer and choose install. Next time you restart Photoshop/Illustrator, you can choose the new, desired printing profiles.

In Europe, if you do not have any other information, use this profile (ISO coated V2.0, also known as Fogra 39L) for your print data. It is the current, common standard used by the print shops.

Thursday, July 10, 2008 10:15:38 AM (W. Europe Standard Time, UTC+01:00) #    Comments [0]  | 

 

On saving TIFF images#

You should always know your limitations. Today I wanted to save a panorama image I've taken, but Photoshop decided that I had reached the 4GB limit of TIFF files...

Monday, June 30, 2008 4:43:15 PM (W. Europe Standard Time, UTC+01:00) #    Comments [0]  | 

 

Picture of the Month - May '08#
One week ago, I went to the Munich Zoo Hellabrunn and took quiet a few images. One of my favorite shots was of this eagle, which I post processed into this image.   
 

Eagle, originally uploaded by dwischnewski.

English | Fun | Leben | Pictures
Monday, June 30, 2008 10:07:20 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]  | 

 

Munich Open 2008#

This weekend I went the the 8th Munich Open and took pictures, loads of them!!! In total I had over 3800 JPEG, taking over 16 GB of disk space. While I could run around on Saturday (fights) and zoom in and out, I had to assume the role of a judge on Sunday (kata & forms). Therefore, from Sunday, most pictures where taken from a tripod and an assistant simply pushed the release button every once in a while.

Around 600 of the images are online now, at Flickr. Here a nice slide show ;-)

English | Fun | Karate | Leben | Pictures
Thursday, May 29, 2008 9:53:05 AM (W. Europe Standard Time, UTC+01:00) #    Comments [1]  | 

 

Digital Photographie - Notes to myself (II)#

A great source for interesting light setups

Thursday, May 15, 2008 5:55:41 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]  | 

 

Digital Photographie - notes to myself#

If you are interested in (digital) photographie, you might want to check out those sites:

There are more, but those two just stand out. I'll add more over time, I'm sure ;)

English | Fun | Internet | Leben | Pictures
Thursday, May 01, 2008 3:39:37 PM (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]  | 

 

March - Foto of the Month#

Munich City Express stop Neubiberg, ursprünglich hochgeladen von dwischnewski

Actually, I have taken this picture in February as well, but this is not so important. Anyway, this picture was taken without a tripod, 1/30 sec, Av 4,0, and 35mm. It was a cool evening, when I went home from work. Since I held the camera in my hand, it is a little blury due to shaking of my hand.   

Friday, March 21, 2008 4:17:53 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]  | 

 

February - Foto of the Month#

Munich, Germany - Street at Night, ursprünglich hochgeladen von dwischnewski

Well, so I start picking up the habit of posting a photo I made every once in a while. Sorry ;-)

This one was taken last Sunday and has an exposure time of about 80 seconds using my trusted EOS 400 and a new lens I bought second hand. I was just playing around with it and just love this picture. It made my desktop about 5 mintues later.

Taken from my balocony pointing at the street in a mild night, just about 0°C - mild for the season, anyway.

Tuesday, February 12, 2008 11:20:09 AM (W. Europe Standard Time, UTC+01:00) #    Comments [0]  | 

 

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]  | 

 

Quick Font Review - Update#

The Update first for the application is done. Your ideas as well as mine all made it into the application.

New features:

  • Preview any True Type Font File not installed on your system
  • Install the previewed files on the fly (if you have administrative rights)
  • Filter view fonts by their styles (decorative, modern, serif, sans-serif, script, monospace, proportional)
  • Get detailed information about the fonts
  • Enumerate dependend fonts (eg: character set sub-font, real bold/italic/etc. versions)
  • Get a quick preview of each font in list

Font Review Application
Font Review Application

You can download the application from here (1,6 MB, ZIP, InstallAware Installer, Digitally Signed). If you have the previous version installed, simply run this setup. It will automatically uninstall the old version prior to installing the ppdate.

While the last version did not need an installer, this version does in fact need it. To accomodate the Windows Vista UAC, the installer is packaged in an out-of-process COM server, the only way to request elevation without requiring administrative rights to simply view/preview fonts.

Any thoughts, any suggestions? Please, let me know ;-)

Thursday, January 31, 2008 4:17:12 PM (W. Europe Standard Time, UTC+01:00) #    Comments [1]  | 

 

More on my Windows Font Preview Application#

I got some feedback from you guys via email on the Windows Font Preview Application, I wrote about yesterday. I like that *g*

So, I decided to spend some more time on it and I ask you for input. What features would you like to see? Following a list of features I am thinking about implementing:

  • Preview font files without installing them on the system, permanently
  • Allow for filtering fonts when looking for a special one for your next essay
  • Show some detailed information about the installed font
  • Enumerate dependend fonts (eg: character set sub-font, real bold/italic/etc. versions)
  • Quick preview of all fonts in list

What (else) would you like? Drop me an email or leave a comment here.

Wednesday, January 30, 2008 6:29:22 PM (W. Europe Standard Time, UTC+01:00) #    Comments [2]  | 

 

The quick brown fox jumps over the lazy dog#

You probably know this text from the built in Windows font preview application.

The quick brown fox jumps over the lazy dog

Well, it is nice to see a font, when you scroll through them. Many applications out there allow to easily few multiple fonts at once. But all free tools I know of lack the possibility to enter your own (unicode) text to review a font. Well, today I needed just that and I let you all use it for free ;-)

It features:

  • Font Size (6 to 128 pt)
  • Bold, Italic, and Underline
  • Quality: default, draft, proof, aliased, non-aliased, and ClearType

Font Review Application
Font Review Application

To get the application, go to the update page.

Tuesday, January 29, 2008 4:40:09 PM (W. Europe Standard Time, UTC+01:00) #    Comments [4]  | 

 

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]  | 

 

Forgot your connection string?#

I always forget to post it to my blog, so finally here it is. Since two years I am using this page and it helps with those crazy connection strings. When you need to find the right one for your database, check it out at www.connectionstrings.com.

Thursday, January 10, 2008 10:52:15 AM (W. Europe Standard Time, UTC+01:00) #    Comments [2]  | 

 

Vista, RAD Studio 2007, and Visual Studio 2008 - OOPS#

Well, as I've written before, I have reinstalled my work machine. Still the same setup as in the last post, basically it is just Windows Vista Ultimate (running in a domain), 2007 Office System, and Visual Studio. First, I have installed Visual Studio, then Office and last the RAD Studio. A few minor tools along the way.

When working in Visual Studio on ASP.NET Applications, I could not use the designer at all. Using the Source view of ASPX files worked fine. When switching to Split- or Design view, the editor would freeze and nothing else would happen. I could close the tab and keep on working in Source view. Not more on ASPX-files. While this is fine most the time, I sometimes would just like the designer.

I reinstalled (repair function) the whole Visual Studio 2008. And it got better, well almost. When switching into Split- or Design view I could see the page, but every control would be causing the following error.

Error Creating Control - Panel1
The type initializer for 'Microsoft.Web.Design.ExtenderInformationServiceProvider' threw an exception.

Or it would tell me, that a control with the name of Panel1 exists already. Whichever error it liked to show. Well, after searching the internet for about an hour I found a solution that seemed to make no sense, so it should work. So I did just that:

  • Uninstall the .NET Framework 3.5
  • Reboot
  • Reinstall the .NET Framework from the Visual Studio DVD
  • Reboot
  • Run Visual Studio and be happy

It works! So if you have a similar problem, try your luck with un- and reinstalling the .NET Framework 3.5.   

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

 

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]  | 

 

Sony Handycam and its Software#

Well, I bought a small Sony Handycam (HDR-SR5E), with a 40 GB hard drive and Full HD resolution. It is a nice video camera, though I am wondering a few things... First, isn't Full HD supposed to be 1920x1080 pixels, so why do all software applications coming with it give me a maximum resolution of 1440x1080 pixels? Would someone enlighten me, please? Next, speaking of the software - why does Sony advertise it is Vista compatible, yet nowhere they tell you, that they only support the 32 bit version of Vista (and Windows XP). You cannot even install it on Vista 64 bit. Well, you can install it, if you wish to trash your Vista installation, since you better have a backup to boot Vista 64 bit again. Honestly, the software can be installed on a Vista x64 machine, it just will not boot again, and yes, I had a clean Vista installation, only 7zip and Adobe Acrobat Reader installed so far...

So, the software they give you lacks most important features, does not run as advertised nad has a lousy MPEG-conversion. So who can name a few good low- to medium-priced software packages to edit AVCHD videos and create full featured DVDs, later Blu-Ray/HD DVD, which currently is not quiet as important, though.

Thanks in advance!

Friday, November 23, 2007 5:28:13 PM (W. Europe Standard Time, UTC+01:00) #    Comments [2]  | 

 

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]  | 

 

CodeRage II - will you go?#

Well, Hadi has written about it already, he was as fast as they come. And not much more can be said, than Hadi has written already. However, I just want to throw my voice in there as well. I was quiet surprised when I read about the registration fee of 150 USD for participating in the conference, if you are not using one the current products. Well, I missed CodeRage last year, because I had other things on my hands to do, but same as Hadi, I wont attend this year either.

Why? Well, for starters, I prefer real life conferences as well. I always dreamed about attending some BorCon (was not in my budget back then) or a real life CodeRage now. As far as I heard, they probably will never happen again and I have to console myself with the EuroDevCon, which is fine. However, a virtual conference just does not have this same flair and for me it is all about meeting the people in person, get to know them, talk a little about whatever one likes, go out for a nice dinner, have fun with all those guys in the lobby and maybe attending a few sessions. But sitting in front of my laptop or computer just does not cut it.

So Hadi, what are you doing end of November? Like to meet? *g*

Tuesday, November 06, 2007 2:26:18 PM (W. Europe Standard Time, UTC+01:00) #    Comments [7]  | 

 

Windows Mobile Device Center on Windows Vista hiding folders...#

I just noticed for the first time, that the Windows Mobile Device Center on Windows Vista hides some folders from your device when connected to your machine.

If you plan, for example, to upload some new ringing tones to your mobile device, you will have to place them in the \Windows\Rings folder of your device. This is, on default, a two step procedure. First, place them in some folder on your device. Next, use the File Explorer of your device and copy the files from the temporary location into the rings folder on your device.

If you want to access the Windows folder, as well as others, directly from Windows Vista, you have to check your Windows Explorer settings "Show hidden System Files."

Darn, why do they make life so difficult. They don't hide the Windows folder of my Vista installation...

Monday, November 05, 2007 11:04:14 AM (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]  | 

 

The day the routers died...#

A few minutes ago a member of the Delphi-PRAXiS posted a link to YouTube showing a great video, though the singer could use some more lessons on singing ;-)

a long long time ago
i can still remember
when my laptop could connect elsewhere

and i tell you all there was a day
the network card i threw away
had a purpose - and worked for you and me....

But 18 years completely wasted
with each address we've aggregated
the tables overflowing
the traffic just stopped flowing....

And now we're bearing all the scars
and all my traceroutes showing stars...
the packets would travel faster in cars...
the day....the routers died

Chorus (ALL!!!!!)

So bye bye, folks at RIPE 55
Be persuaded to upgrade it or your network will die
IPv6 just makes me let out a sigh
But I spose we'd better give it a try
I suppose we'd better give it a try

Now did you write an RFC
That dictated how we all should be
Did we listen like we should that day

Now were you back at RIPE fifty-four
Where we heard the same things months before
And the people knew they'd have to change their ways....

And we - knew that all the ISPs
Could be - future proof for centuries

But that was then not now
Spent too much time playing WoW

ooh there was time we sat on IRC
Making jokes on how this day would be
Now there's no more use for TCP
The day the routers died...
Chorus (chime in now)

So bye bye, folks at RIPE 55
Be persuaded to upgrade it or your network will die
IPv6 just makes me let out a sigh
But I spose we'd better give it a try
I suppose we'd better give it a try

I remember those old days I mourn
Sitting in my room, downloading porn
Yeah that's how it used to be....

When the packets flowed from A to B
via routers that could talk IP
There was data..that could be exchanged between you and me....

Oh but - I could see you all ignore
The fact - we'd fill up IPv4

But we all lost the nerve
And we got what we deserved!

And while...we threw our network kit away
And wished we'd heard the things they say
Put all our lives in disarray

The day...the routers died...
Chorus (those silent will be shot)

So bye bye, folks at RIPE 55
Be persuaded to upgrade it or your network will die
IPv6 just makes me let out a sigh
But I spose we'd better give it a try
I suppose we'd better give it a try

Saw a man with whom I used to peer
Asked him to rescue my career
He just sighed and turned away..

I went down to the net cafe
that I used to visit everyday
But the man there said I might as well just leave...

And now we've all lost our purpose..
my cisco shares completely worthless...

No future meetings for me
At the Hotel Krasnapolsky

and the men that make us push and push
Like Geoff Huston and Randy Bush
Should've listened to what they told us....
The day...the routers....died
Chorus (time to lose your voice)

So bye bye, folks at RIPE 55
Be persuaded to upgrade it or your network will die
IPv6 just makes me let out a sigh
But I spose we'd better give it a try
I suppose we'd better give it a try

Words and performance by Gary Feldman

Monday, October 29, 2007 12:44:54 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 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]  | 

 

Installing Microsoft Silverlight#

I just decided to install Microsoft Silverlight. Microsoft starts to attack the Flash-market with its own tool Silverlight. Well, the first test every application has to take, the Installation Process, and Silverlight failed. Well, it installed alright, however, without any warning or asking whether I want to, it closed all my browser windows (5, each with multiple tabs opened) and reopened only one of those.

Sorry Microsoft, but you can do better than that!

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

 

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]  | 

 

SmartInspect vs CodeSite - Round 2#

Okay, by now you know that both, SmartInspect and CodeSite are all about logging what happens in your application. You may even have checked out one or both tools. A nice feature both solutions provide is "logging" values to a separate watch windows (toolbox). In CodeSight they named it Scratch Pad, in SmartInspect it's named Watches or Wathces Graph.

So, how exactly does this help you? Let's take the explaination from the CodeSite help on Scratch Pad, to understand what it is all about:

The Scratch Pad is designed to display non-persistent information. The Scratch Pad is very effective when you want to keep track of some information but you do not need to record the information in the message log. Consider tracking the mouse position during mouse move events. It is pointless to send this information to the message log because too much data results. Furthermore, the only relevant value is the most recent mouse position.

Okay, so this idea makes a lot of sense to me. Imagine knowing how many users are online on your website, nothing you really want to log about, but the current number may come in handy, when looking at the log. Now, which of both tools excels here? Well, it is SmartInspect. Why? Simply, while CodeSite only reports the current value for your watch, SmartInspect can display a historical graph of the values, also. Thus, the current value is visible in both tools, but for a "look back in history," only SmartInspect will show you what has happened before.

2 vs. 1

So, this round goes to SmartInspect and thus SmartInspect will take the lead for the first time in this small battle presented to you on my blog ;-)

Wednesday, October 10, 2007 2:33:55 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]  | 

 

Creating End User Help Systems#

Currently I am looking for a good software to create end user (not developer!) help systems. After testing a few products, I am tending towards Help & Manual from ecSoftware. It supports all features, that we are looking for:

  • Import/Export: HTML Help, WinHelp, Word Documents, XML
  • Export: PDF, Online Help, e-Books, Print Manuals
  • Definition for each topic in which media type to appear
  • Easy "skinning" for each media type
  • Full support for Help IDs
  • Multi-Language support

However, I know many of you have used other systems as well. Which would you recommend? Please be so kind and drop me an e-mail recommending documentation software or leave a comment in my blog.

Thanks,
Daniel

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

 

Using the MS LogParser for rough statistics#

A few weeks ago, Steve Trefethen published his Blog entry Publishing IIS log file analysis using Microsoft Log Parser, where he outlined how to use the free software MS Log Parser to run a basic analysis of the log files created by IIS. Today I set up my task scheduler to run two basic tasks once a day to generate Summaries on the most read blog entries as well as the top downloaded files from my conference page.

The whole setup process took less than 20 minutes to figure out how to format the query, to create the templates for displaying them within this blog layout and to setup the scheduler tasks. The last task was the "hardest", as you cannot use parameters when using the scheduler interface. After figuring out that problem, I simply created the batch files and pointed the task scheduler to them, which in turn run the queries.

If you like to use those tasks for your DasBlog site, simply install the MS Log Parser on your server and adjust the following calls.

The Top 50 Requested Pages

logparser.exe 
"SELECT TOP 50 
  to_lowercase(cs-uri-stem) as Url, COUNT(cs-uri-stem) AS Hits 
FROM
  D:\LogFiles\W3SVC2106058385\ex*.log 
WHERE 
  (to_lowercase(cs-uri-stem) NOT LIKE '%%captchaimage%%') AND
  ((to_lowercase(cs-uri-stem) = '/blog') OR 
(to_lowercase(cs-uri-stem) = '/blog/default.aspx') OR
(to_lowercase(cs-uri-stem) like '/blog/20%%.aspx')) GROUP BY Url ORDER BY Hits DESC" -o:tpl -tpl "D:\Sites\Blog\Content\Special\mosthits.format.tpl" > "D:\Sites\Blog\Content\Special\mosthits.format.html"

The Downloads-Counter

logparser.exe 
"SELECT TOP 50 
  to_lowercase(cs-uri-stem) as Url, COUNT(cs-uri-stem) AS Hits 
FROM
  D:\LogFiles\W3SVC2106058385\ex*.log 
WHERE
  (to_lowercase(cs-uri-stem) like '/downloads/%%')
GROUP BY 
  Url 
ORDER BY
  Hits DESC"
-o:tpl -tpl "D:\Sites\Blog\Content\Special\downloads.format.tpl" > "D:\Sites\Blog\Content\Special\downloads.format.html"

The .tpl-files are formatted similar to the ones shown in Steve's blog.

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

 

Comments are working now#

Due to a problem with the setup of the SMTP-Account comments to my blog where saved, however I was not notified and therefore did not publish them so far. I have scanned through all posts and published your comments now, as well as fixing the setup. In the future, comments should appear faster now, as I get notified about them from now on.

Sorry for any hurt feelings about not publishing them, they are online now.

Thursday, October 04, 2007 4:11:49 PM (W. Europe Standard Time, UTC+01:00) #    Comments [0]  | 

 

DasBlog Extension for Google AdSense#

Currently it is not much, but I already was asked how I added Google AdSense into my blog, which is based upon DasBlog. As far as I know, DasBlog offers no direct way to add an element only once between the feeds. Google AdSense limits you to three (I think) ad-areas per page, so adding the AdSense after every post is way too much and guarantees your removal from the AdSense program.

For now, I'll simply offer my macro for download and you can use it as you will. It is fairly easy to implement into your templates. To get it working, you have to edit the web.config file of your DasBlog. If you have not done so, you'll have to uncomment the settings for using macros and you have to instert a node for my macro in the newtelligence.DasBlog.Macros section.

<CONFIGSECTIONS>
        <SECTION type="newtelligence.DasBlog.Web.Core.MacroSectionHandler, newtelligence.DasBlog.Web.Core" name="newtelligence.DasBlog.Macros" requirePermission="false" />
        [...]
</CONFIGSECTIONS>

[...]

<NEWTELLIGENCE.DASBLOG.MACROS>
        <ADD type="MyGoogles.MyGoogleMacros,MyGoogles" macro="MyGoogleMacros" />
</NEWTELLIGENCE.DASBLOG.MACROS>

You need to download my macro (2 KB) and copy it into your DasBlog-bin folder. Now you are up and running. Open your template for your blog and insert the following line (customize the location of the file) for inserting any file content at the position.

<%IncludeContentOnce("C:\Webs\Site\Blog\Content\GoogleAdSense.txt", "ContentAdSense")|MyGoogleMacros%>

You can add multiple content this way, it will load the file and output its content straight into the expected position. The second parameter is a simple identifier which will allow you, when change, to add multiple different contents into your blog. I'll update this function soon to take more parameters allowing you to further control the contents position within the list of feeds.

The nice thing about creating macros for DasBlog is, that it is straight forward and easy. From first finding out abou macros to finally implementing a working solution it took me less than 15 minutes.

Thursday, October 04, 2007 7:54:24 AM (W. Europe Standard Time, UTC+01:00) #    Comments [0]  | 

 

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]  | 

 

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]  | 

 

Windows Vista - Find what you are searching for#

At the EKON I gave a session on the Windows Vista search engine and how to feed it with own content. One thing I heard quiet often was Who bothers using it. or It is hard to find what you are looking for! Well, you may be right, but I think you are wrong.

First: how is it designed? Who did Microsoft have in mind when implementing the search feature right in to the start menu of Windows Vista? Not you, probably. Microsoft designed it for the laymen using Windows, persons who use the computer as part of their work life, as part of their free-time. The average user is probably quiet happy how well the search works. But then you are coming and you tell me you can't find what you are looking for. Why?

Well, mot of us remember searches from a time when it worked strictly on file names, like dir *demo*.*, but this is not how the Windows Vista search works. The search engine (aka Windows Desktop Search 3.x) matches your search against the file name, the content of the file, meta data of the file, data about the program used to create the file, and quiet a few other things.

If you want Windows Vista to search for files containing demo in their name, you have to tell Vista to do so. And it is quiet easy, once you know it, simply type: file:(demo) and the search will return just those. You want to search for files created by a specific person, well you use author:(Daniel Wischnewski) or author:(Daniel OR Bob) (AND, NOT, OR, and so on are case-sensitive)and so on.

Once you know that the search works this way, it is time to get to know over 50 search modifiers, all part of the advanced query language coming with the Windows Desktop Search. Btw, if you like what you read here, but you are still running on Windows XP, go get it!

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

 

EKON 12 - Dates are published#

I just thought I let you know already, the dates for the next EKON are published. It will be in Frankfurt/Main again in September 2008, 22nd through 26th.

I'll be there, will you?

Wednesday, October 03, 2007 4:31:45 PM (W. Europe Standard Time, UTC+01:00) #    Comments [1]  | 

 

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]  | 

 

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]  | 

 

Windows Vista - new short cuts#

At the EKON I noticed that many developers do not know one of the great new short cuts introduced. The first ten icons in the short cut menu bar can be reached by two keys on you keyboard at any time. Simply press the [WIN] key with [1] through [0] above your letters to start the corresponding application. Those short cuts however do not work with your number block at the right of the keyboard.


Just to highlight what I mean...

Just in case you don't know [WIN]+[L], give it a try as well (this is not new though).

Tuesday, October 02, 2007 10:58:17 AM (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]  | 

 

EKON 11 - Promised Entry #1#

In one of my sessions I promissed you folks to post the links for fixing the Windows Vista copying issue, being so slow and so on because of DRM.

http://support.microsoft.com/?kbid=938194
http://support.microsoft.com/?kbid=938979

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

 

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]  | 

 

Restarting my Blog#

Well,

it has taken longer than expected, but I am back in the blogging community. Starting with the EKON @ Frankfurt today, I will be blogging again, yes! As for the EKON itself, I will be there starting tomorrow. I have two sessions on Windows Vista (Application Recovery API and Windows Desktop Search) and a CodeCamp on Windows Vista.

A few things on this Blog: I will start blogging about different matter, not just software development. However, the feed supports categories, so you can filter them in your reader as you like. Each entry will be marked as either German or English, depending on the language I chose to write it in. Comments are moderated as in my old blog to prevent spamming. The current design is one of the default designs comming with dasBlog. For now, I'll simply adapt it for my needs and future will tell what comes...

I am looking forward to meet old friends again, seeing people I have not met yet and having some fun.

See you soon and read you often,
Daniel

Monday, September 24, 2007 9:00:18 AM (W. Europe Standard Time, UTC+01:00) #    Comments [2]  | 

 

All content © 2009, Daniel Wischnewski
On this page
Project 50 in Photography
Delphi Days 2009 in Hamburg (Pictures)
Review: SDN Event March '09
Photos of the Months
Windows Vista, UAC, Defender and Viruses...
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
More on the Scott Kelby Photo Walk
Delphi Code Camp - September 2008
Scott Kelby's World Wide Photo Walk 2008
Picture of the Month - July '08#
Picture of the Month - June '08#
Partial Solar Eclipse
Color profiles for Print Jobs
On saving TIFF images
Picture of the Month - May '08
Pictures of the Delphi-Tage 2008
Save over 80% on Delphi - that is EIGHTY PERCENT - YES!!!
Munich Open 2008
Digital Photographie - Notes to myself (II)
Starting BETA of our new product for HDR image generation
Digital Photographie - notes to myself
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
March - Foto of the Month
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
February - Foto of the Month
Delphi Days 2008 - Germany, Austria, and Switzerland
Quick Font Review - Update
More on my Windows Font Preview Application
The quick brown fox jumps over the lazy dog
DSDT is now Delphi-Treff
Forgot your connection string?
Vista, RAD Studio 2007, and Visual Studio 2008 - OOPS
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
Sony Handycam and its Software
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
CodeRage II - will you go?
Windows Mobile Device Center on Windows Vista hiding folders...
Running 16 bit applications on Windows Vista...
UTF-8 and Delphi - the big Unknown...
EKON 12 Topics
The day the routers died...
Sending Emails with Indy (UTF-8)
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
Installing Microsoft Silverlight
More on Aero-glass and Delphi forms
Windows Vista Aero - TGlowLabel
SmartInspect vs CodeSite - Round 2
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 ;-)
Creating End User Help Systems
Using the MS LogParser for rough statistics
Comments are working now
DasBlog Extension for Google AdSense
Inside of RAD Studio Welcome Page
German Delphi Days 2008
Windows Vista - Find what you are searching for
EKON 12 - Dates are published
A new Delphi blog is online
Old Papers for Download
Windows Vista - new short cuts
EKON 11 - Promised Entry #3
More on BlackFish SQL
EKON 11 - Promised Entry #2
CodeSite - would I have known...
EKON 11 - Promised Entry #1
Learning swimming with BlackFish SQL.NET
On my way to EKON/EuroDevCon
EKON Conference Material
Restarting my Blog
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