Apr 122005
 

I still get a lot of search hits from people looking for a way to change the extensions that cannot be viewed in Outlook, because Microsoft decided in all her wisdom to mark a lot of extensions as “unsafe”. In Outlook Express there is a nice dialog to change this behaviour, in Outlook there is not. You can do it by editing the registry by hand, but a lot of people are afraid to do so.

For that reason, I created ouau.exe, or “Outlook Unsafe Attachments Unblocker”. It detects your Office version (which you can override) and lists the extension so you can block/unblock them. There’s a handy “select all” radiobutton that will save you some clicking.

Here is a screenshot.

Click here to download the program. It’s in WinRAR format, so you need to extract it first.

Apr 112005
 

NickMalik has a very nice article about Feature Driven Development (FDD) as opposed to Work Breakdown Structure-development (WBS). A must read (it’s not that long) for every developer and IT-projectmanager out there.

When you think about it: when you develop via the principle “write a test first” (I can’t find the term for it now, brains already in hibernate-mode!), it’s basically FDD. You test a feature, don’t you?

 Posted by at 00:57
Apr 102005
 

My little C# project is coming along just fine. The basic idea is to create a synchronisation tool between an ERP application and Outlook, since the manufacturer of the ERP application has no plans on creating a “synchronize with Outlook” functionality in the near (and not so near) future. Since I don’t want to get into any legal stuff, I wanted to create a one-way sync-mechanism, basically a download-from-ERP-to-Outlook. And since I was in need for some project to learn C# better, this was the opportunity.

Since the ERP application has an ODBC DSN defined on the client to create a connection from MS Word to their data, I decided to use that to connect to the database. ODBC is not the fastest and most elegant thing around, but it’ll do the job just fine.

The main form is just a simple form with a textbox for the employerscode and two datefields, to specify the period that needs to be downloaded to Outlook. The functionality sofar:

– Employee-code is checked against the database
– Timespan is 7 days by default: changing the from-date, the to-date will be 7 days later
– Pressing sync will get all appointments in the daterange, and search for all attendees (other than the employee) of the appointment

What needs to be done to enter the Alpha-stage:
– Convert the found data to an Outlook.AppointmentItem and insert it into Outlook
– Have seperate time-fields (by default 00:00:00 and 23:59:59) to be able to enter a narrow timespan, without the user having to specify the time in each of the date-fields

Things I learned from working with C# (VS.NET 2003) are:
– Case sensitivity. Needs to get used to, and can be very annoying. Odbc is something else than odbc. When the compileroutput lists the error, is sometimes hard to spot what is wrong.
– Functions need not be declared before (above in the sourcecode) you use them. This is different from (object)pascal. But it’s nice: you can keep things together, without the need for a specific order. Alphabetically will do just fine.
– I’m not sure if it can be done in (object)pascal (never tried it), but variables declared within curly brackets have a scope only between these brackets. Very nice for dummy-variables, and you don’t want to make up another name, just because you’re still in the same function/procedure. If it’s a meaningless variable, using the same name is just fine.
– Compiler directives are nice. Having the ability to switch between debug and release with one buttonclick, makes it very usable to include lots of debugmessages, that just won’t show up when you build/run the release-version. No more forgetting about that one ShowMessage when releasing your work to the client.

 Posted by at 01:17
Apr 072005
 

Yeah! I just created my first add-in for Word. When I press the button on the toolbar, a form comes up that will do the main interaction with the user. Since it’s WRap, the first thing the user will be presented with (for now) is to choose between Design or Run a report.

A nice feature of VS.NET, that I will miss if I buy Visual C#, is the deployment. The wizard created a setup-project in the solution that will install the add-in. I changed some settings to have it correctly installed on my machine, but I have to create a decent (and conditional) setup later. Installing a Word add-in is of no use when you don’t have Word, now is it? With Delphi I used Inno Setup, perhaps that can be used for C# projects as well.

 Posted by at 00:21
Apr 062005
 

Visual Studio has support for VB.NET, C#, J# and C++.NET. But I’m only going to use C#. So I think I’m going to look into Visual C# Standard. I lacks remote debugging, and most of the deployment options of Visual Studio. And MSDN Library says that it lacks:

The “server” node in the Server Explorer.
* Developers will commonly use this feature to visually design server-side solutions.

I’m not sure if I’m going to miss this feature. Update: I’m not going to miss this feature. It’s the database-connections treeview. Handy feature when you have it, but I won’t miss it when it is not.

Visual C# Standard only costs US$109.

 Posted by at 15:27
Apr 052005
 

Yesterday, I managed to create a button in Microsoft Word (with the highly sophisticated functionality of displaying ‘you pressed the button’ when … you press the button), something I’ve been unable to pull of in Delphi for quite some time. Automating Word (basically creating an Ole-object and controlling it) is not so difficult as it might seem when you start, but doing so from within Word (read: creating an add-in) is not something very well documented if you’re using Delphi.
I found an article in the Microsoft Knowledgebase via CodeProject that explains how to create a very simple add-in. And that was all I needed, and all I have been searching for quite some time now.

The generated add-in (DLL) must be registered (regasm) and be put in the addins-directory (e.g. c:program filesmicrosoft officeoffice11addins) and that’s about it.

WRap (Word Rapportage, Dutch for Word Reporting) is a working title, so I need to think of something that’s not already there in the crowded land of reporting tools.

 Posted by at 09:50
Mar 222005
 

I promised you to come back and tell you about my milage with Mantis. Although I don’t think it’s the best looking issuetracker there is, it certainly is very easy to use. Things you need are there where you look. It has all the relevant features for me to keep track of my issues.

At the moment I am not working on a “real” project, so I use Mantis as a very sophisticated to-do-list/project-management-tool. I defined the projects I’m working on, and also the thoughts I have that could lead to a real program are defined as projects. Each project has it’s own issue-categories, some of them they all have in common (categories GUI, Error handling, Program logic, Installation, Configuration). Within these categories I define issues that are either bugs, feature requests, tweaks. Because each issue can be stored with a version of your project, it’s easy to define future features.

So far, it has helped me to organize my thoughts and the things I wanted to start, but remained thoughts in my head. I already have 6 projects defined, one of it actually being a project that’s “real” but is waiting for customer input on what to do next (move on to a new and improved version, or declare this version as the-end-of-it).

Thanks Scott, for pointing me in the right direction!

 Posted by at 22:50
Mar 192005
 

Because I need to “deploy” O.M.O. to the laptop, and the program includes a data-directory with the NexusDB database, I thought: why not give Inno Setup a try?
I downloaded version 5.0.8, installed and ran it. Opening example1 made me wonder: it can’t be that simple? I changed some of the text to represent my application name etc, and press the “run” button. It worked. In about 5 minutes, including the time to download (well, that was about 3 seconds) the program itself and the source (yep, Inno Setup is Open Source). Thanks, Jordan!

 Posted by at 01:38
Mar 172005
 

My little project to create a program to practice conversions is done. Well, it generates random conversions, does the checking, gives you a new conversion when your answer was correct. What is still left to do:

  • Stop after maximum number of questions (user specifies number)
  • Create a timed mode, where you play against the clock
  • Redo the GUI (too much space now)
  • Maintain some “score”
  • Record the scores, with a username
  • Conversions are “from” -> “to”, but create logic for the other way around (less records in database).

The conversions are stored in a NexusDB V2 database (beta 7) and that works like a charm. I hadn’t worked with NexusDB properly yet, but V2 is clean and straightforward. Definitely worth checking out if you need a small database that can grow to a real C/S solution.

 Posted by at 23:06
Mar 122005
 

Borland sure is in touch with it’s customers: Delphi2005 update 2 is released, a little over a month after update 1 (25-1 and 9-3). But we delivered you D2005 fast, and we give you the updates even faster, so you’re happy now, aren’t you, dear customer?

 Posted by at 21:37