Thoughts from Dan Miser RSS 2.0
 Thursday, May 20, 2004
If you were affected by the "persistent field size mismatch exception" introduced in Delphi 7.1, then take a look at the new public beta that Borland released.
Thursday, May 20, 2004 9:13:00 AM (Central Standard Time, UTC-06:00)  #    Comments [0] -
Delphi
 Wednesday, May 19, 2004
I fully believe that having a way to automate your builds is the only way to guarantee good results when building your product. The more complex your project becomes, the more complex your build becomes. This is a bad thing for several reasons, the 2 foremost being that the build becomes time-consuming and error-prone due to manual interaction. Of course, the corollary is that when you get to that stage, there is typically only one (maybe 2) person(s) that understand how to do a full build of your product. Using an automated build tool can help the entire team and the quality of your product immensely.

I have spear-headed the effort to automate builds several times now. Sometimes, it is met with resistance. Sometimes, it is encouraged. But in every case, when the build is automated the end-result blows people away. Comments like "Wow, doing a build is that easy?" are frequently heard. :-) After getting an automated build into your organization, people start seeing many other opportunities to fine-tune the build. "Oooh, wouldn't it be nice if we could schedule this to run at midnight every night?" or "Let's have the build run the test scripts automatically for us" or "Hey, we can add this other utility into the build process to ensure that datasets are closed at design-time!". The results are always well worth the effort. At one company, I took a completely manual build from 4 hours down to double-clicking and 45 minutes. The added benefit of not forgetting steps also made the build more reliable the first time. I imagine results like these are more common than not.

There are several tools out there, and here's my simple list of tools that I find useful. All of them are extensible in the sense that you can create your own actions and have those actions execute whatever you want during the build. In my opinion, that is the absolute best part of creating the build script!

ProductLanguageNotes
FinalBuilderMultiple (Delphi, BCB, VS.NET)Commercial, but absolutely fantastic
AntJavaOpen Source
NAnt.NETOpen Source. Knock-off of Ant
Even if you end up crufting your own automated make together with BAT files and make, it's worth it. So quit standing on the sidelines and get cracking! If you know of other build tools that you find useful, please leave a comment and I'll update the main page.
Wednesday, May 19, 2004 1:24:00 PM (Central Standard Time, UTC-06:00)  #    Comments [6] -
Delphi
 Thursday, May 13, 2004
I was talking with Josh Dahlby back in the day and we started talking about general software development. During that discussion, I think we hit on one of the fundamental tenets of software development, namely "It takes 3 iterations of development to perfect something". This isn't an excuse to ship products with glaring ommissions and bugs, but rather, mirrors the development experience that both of us have had.

The first iteration is your world-beater version. It puts the technology (be it component, framework, or application) out into the hands of the masses. The new "bright shiny object" (thanks to Danny Thorpe!) syndrome takes hold and calls people to your creation like a siren song drawing a ship closer to the craggy rocks. The success of the first revision is short-lived, though. Inevitably, no matter how smart you think you are, and how much time you spent trying to forsee all possible scenarios, users will bring you back to earth to let you know that you failed miserably.

The second iteration implements the feedback you received and makes the product better. The API will change, performance bottlenecks will be solved, and features will be added. People will be happier to use this version as it starts to solve their problems in the way that they want. This is when the product starts to achieve acceptance, and moves from an Early Adopter experience to a Must-Use product.

The third iteration is where you truly understand the problem and start to make things more flexible (better architecture, pluggable components, more user-configurable options, etc.). Inevitably, this version is the one where you can reuse the code easily, and extend the architecture into something aesthetically pleasing - as well as rock-solid. However, now that you fully understand the problem, the typical software shelf life of a product comes in to play, and you start all over with a new product. :-)

Some may argue that they don't go through this cycle. I would argue that either the product you're producing isn't that complex, or more likely, management is allowing you to condense a couple iterations into one (e.g. open betas, longer schedules, etc.). I believe that all products go through this cycle, but whether or not the cycle plays out at clearly defined intervals like version 1.0, 2.0 and 3.0 is not mandatory.

In conclusion, I think it's important to understand limitations to have success. The greatest limitation that you can accept is that you can not possibly understand every way every user would like to use something just by drawing boxes and lines.

Thursday, May 13, 2004 9:43:00 AM (Central Standard Time, UTC-06:00)  #    Comments [0] -

 Wednesday, May 12, 2004
The new Delphi 7.1 update contains a new version of MIDAS.DLL (version 7.1.1692.666). Dave Rowntree did some digging and came up with this list of fixes in MIDAS in Delphi 7.1. (Thanks, Dave!!!) Note that he cross-referenced the fixes to the QualityCentral entries. So I would say this is (yet) more proof that QC is working. You can download the newest version of the dll from my web site. It should be backwards compatible with Delphi 5 and 6. I will update this entry with any fixes that were missed, or any new issues that got introduced.

Fixed in Midas.dll
1712 - TFieldAggregate returns incorrect value
2019 - nested CDS Edit/Post twice, master ApplyUpdates, Delta incorrect
2027 - Edit/Post on nested CDS InternalCalc field causes ChangeCount to increase
2333 - Incorrect Delta after ApplyUpdates(0) with poPropogateChanges
2529 - Opening .XML files using D7 Midas.dll that were created using D6 Midas.dll fails
2626 - Inability to use ftLargeInt as an index with a tClientDataset
2717 - Incorrect ChangeCount with TWideStringField
3777 - InternalCalc fields are reset to null by ApplyUpdates when using poPropogateChanges
4301 - CancelRange on nested ClientDataset breaks link with masterrecord
4508 - ChangeCount being incremented when data has not changed.
4676 - Size of Blobfields not adjusted when using RefreshRecord
5319 - Client Dataset Locate method on a Word field always returns false
5509 - MIDAS allocates values against nested dataset AutoInc fields.
5646 - Nested TClientDataSet deletion fails if child has CloneCursor has been invoked
6591 - TBlobfield looses value when LogChanges = False
6849 - ClientDataSet insert duplicate's details record's with NestedDataSet

Fixed in Midas.dll + VCL
2011 - 'key violation' - InternalCalc field in nested CDS/poFetchDetailsOnDemand
3786 - ClientDataSet.FindKey on cloned cursor fails
3496 - ClientDataSet Filter on a LargeIntField - Design / Run Time Errors.
7543 - MIDAS corrupts indices

Wednesday, May 12, 2004 8:56:00 AM (Central Standard Time, UTC-06:00)  #    Comments [14] -
Delphi
There is a problem when using TActions (the standard, vanilla Action components - not the ActionBand stuff) inside a TActiveForm. In a nutshell, they just don't wor, so I logged a QC report on it. In talking with some people, the question that keeps coming up is: "Do people actually use ActiveForms?" So, please, if you are using ActiveForms, do a few things for me:
  • Go to the QC report and rate it and/or leave a comment saying that you use ActiveForms
  • If you also use (or want to use) TActions in your ActiveForms, vote for the report
  • Leave a comment here
Even though this issue affects me directly, I'm inclined to think that this is a corner case that isn't really in the mainstream. If that assumption proves to be wrong, then at least we will have some facts to help support the position.
Wednesday, May 12, 2004 8:49:00 AM (Central Standard Time, UTC-06:00)  #    Comments [6] -

 Tuesday, May 11, 2004
Now that you have the new Delphi 7.1 update, you may be wondering what fixes were done to the ActionBands. Steve Trefethen - the Borland R&D engineer responsible for these components - updated the Unofficial ActionBand Fixes to work with Delphi 7.1 and explained why they were included this way. While it's not exactly great news that the fixes weren't included inside Delphi 7.1, it is good to see that Steve took the effort to make sure that we could still get the fixes with the new version. Thanks much for your efforts, Steve!
Tuesday, May 11, 2004 8:36:00 AM (Central Standard Time, UTC-06:00)  #    Comments [4] -
Delphi
 Saturday, May 08, 2004
My article, Replacing TabSheets with Frames is now up on the BDN website. This article summarizes issues that you will likely find when designing an application using TPageControl components. The article presents some background information and solutions to problems by using TFrames, interfaces and inheritance. Give it a look, and leave any comments here (or on the BDN site). Be sure to rate the article, too!

Now might be a good time to subscribe to the Delphi BDN RSS feed, too.

Saturday, May 08, 2004 10:45:00 AM (Central Standard Time, UTC-06:00)  #    Comments [11] -
Delphi
 Friday, May 07, 2004
Are you a hard-core Delphi programmer that doesn't speak a lick of C#? If so, John Kaster, from Borland, wrote this article to talk about BabelCode (along with a nice sample of creating web services in Delphi 8). BabelCode is a web service that converts C# code to Delphi code using the CodeDOMs from C#Builder and Delphi 8 for .NET. I don't think any programmer who wants to write .NET code should overlook learning C#, but until you do, you can use the web service in the article to translate the massive amount of information out there to the language of your liking. The other benefit of using BabelCode is that since the CodeDOM is central to the IDE, if you find a bug in the translation of code, you most likely have also found a bug that will manifest itself in the Delphi IDE. So be sure to be a good citizen, and report any bugs you find when using BabelCode. Feel free to read my article on why you should report bugs if you'd like.
Friday, May 07, 2004 3:37:00 PM (Central Standard Time, UTC-06:00)  #    Comments [2] -
Delphi
 Wednesday, May 05, 2004
After a year off from BorCon, I'll be back this year again. I'll be presenting a couple of topics: "Win32 WebServices" and "Multi-tier Applications in .NET for Delphi Programmers". The "Win32 WebServices" talk will focus on using and writing web services with Delphi 7. The Multi-tier talk will cover how to create a multi-tier application in .NET. There will be some analogies between DataSnap and ADO.NET, with a dash of Remoting how-to.
Please feel free to email me or leave comments if there are aspects of these topics that you would like to see covered. Hope to see you there!
Wednesday, May 05, 2004 10:25:00 AM (Central Standard Time, UTC-06:00)  #    Comments [3] -
Delphi
Navigation
Archive
<May 2004>
SunMonTueWedThuFriSat
2526272829301
2345678
9101112131415
16171819202122
23242526272829
303112345
About the author/Disclaimer

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

© Copyright 2008
Dan Miser
Sign In
Statistics
Total Posts: 305
This Year: 20
This Month: 1
This Week: 0
Comments: 601
All Content © 2008, Dan Miser
DasBlog theme 'Business' created by Christoph De Baene (delarou)