Register to post in forums, or Log in to your existing account
 

Post new topic  Reply to topic     Home » Forums » Zugg's Blog
Zugg
MASTER


Joined: 25 Sep 2000
Posts: 23379
Location: Colorado, USA

PostPosted: Thu Jul 20, 2006 8:52 pm   

Another bad day with 3rd party components
 
Once again, I'm really hating 3rd party Delphi components.

I normally really like the stuff from AutomatedQA. They make the AQTime profiler for Delphi that I use for performance tweaking. And they make the Docking library that I'm using in CMUD.

However, today I tried to update the docking library. Note that this is supposed to be a MINOR upgrade from version 1.6 to 1.7. It adds the hooks needed to actually close the MUD windows in CMUD instead of just hiding them.

Well, first their installer was a headache. When running it, it just said I had to first uninstall the old version. Can't it do that? There wasn't any Uninstall link in their Start/AutomatedQA menu, which means going into the Control Panel, selecting Add/Remove Software, and waiting, and waiting, and waiting...

I have always hated the fact that Microsoft made this Add/Remove control panel SOOOOO slow in Windows XP. I don't know what fancy crap it is doing, but I just want to see a list of what's installed. I don't care how old it is or anything else. Sigh.

So anyway, I uninstall the old version, then install the new version.

Gee, the Subversion control system is now all messed up for that directory. Obviously they deleted something they shouldn't. Can't people just give me a set of source code files that I can copy where I want. Why do installers have to be so fancy and STUPID!

So now I have to delete it, restore from my Subversion repository, then rename the subversion directory, then install the 1.7 docking library, then rename the new library to AQDockNew, then rename the subversion directory back to just AQDock, then I manually drag all of the files from AQDockNew into AQDock allowing it to overwrite existing files. Then I am able to do a subversion Commit to get the new source code into the repository.

OK, that's about 30 minutes that I didn't plan to spend. But wait...it gets MUCH worse.

So now I run my build script to rebuild the 3rd party components in the proper order with the proper dependancies. Then I load Delphi.

Gee, as soon as Delphi tries to load the main CMUD form, it exits immediately. No error message or anything. Just exits from memory.

Great, now I can't even work on CMUD.

So I remove the AQDock components. Now Delphi loads (even though it complains about missing components needed for CMUD). OK, so that verifies it's a problem with AQDock.

I write a test program for AQDock and then reinstall the components again. The test program seems to work fine.

Great, so it's some complexity in CMUD that is causing the crash with AQDock. Just what I wanted to spend my day on.

I start comparing the test program docking controls with the ones in CMUD. Line by Line I start changing the test program so that the various properties are set the same as in CMUD.

Finally, I get the test program to crash Delphi. The culprit is assigning the Images property of the aqDockManager to an ImageList that is ON ANOTHER FORM.

You see, in CMUD I have a master ImageList that contains all of the images for buttons, etc. I put this master ImageList in it's own form module. Then, any form that needs images just adds the master form to the Uses clause and uses the image list.

This allows me to centralize all images used in CMUD. So if I change the image for the OK checkbox in the master list, then each and every button in CMUD now uses the new image. This is a very important module feature in CMUD.

Well, AQDock works if you use an ImageList on the same form as the DockingManager, but NOT if you use an ImageList on a different form.

So basically, until I can figure out why this is causing a crash, I can't release a new version of CMUD. I have removed the Images property in CMUD so that at least I can compile it and work on other stuff. And I guess I can ship a version that doesn't use images on the docking window tabs. But this would disable the status icon features in CMUD that show when a window has received new text. So it's not something I can live without forever.

I have emailed all of this to AutomatedQA. We'll see what they say.

But once again I find myself in the position of almost wishing I didn't perform the update or that I have to rely on 3rd party components.

Sigh
Reply with quote
Zugg
MASTER


Joined: 25 Sep 2000
Posts: 23379
Location: Colorado, USA

PostPosted: Thu Jul 20, 2006 8:59 pm   
 
OK, I am now setting the Images property at runtime when CMUD loads, rather than doing it with the form designer in Delphi. This seems to work, so I'll stick with this for now.

So, that was only 4 wasted hours.
Reply with quote
Tech
GURU


Joined: 18 Oct 2000
Posts: 2733
Location: Atlanta, USA

PostPosted: Thu Jul 20, 2006 10:04 pm   
 
I'm sorry to hear it's rough going, but trust me we all appreciate the effort. I'm curious to know why they don't allow you to load the images from before.
_________________
Asati di tempari!
Reply with quote
Rainchild
Wizard


Joined: 10 Oct 2000
Posts: 1551
Location: Australia

PostPosted: Thu Jul 20, 2006 10:28 pm   
 
I've had mixed blessings with 3rd party code, sometimes it's great, sometimes it's like you said - a real problem. The good thing about it is at least we have a docking system... it would have taken more than 4 hours to write one of those :) Frustrating none the less.
Reply with quote
Zugg
MASTER


Joined: 25 Sep 2000
Posts: 23379
Location: Colorado, USA

PostPosted: Fri Jul 21, 2006 9:34 pm   
 
Well, I have to give AutomatedQA points for quick support. Apparently my timing was really good, since they were already working on the 1.71 update. They were able to fix the Delphi crash problem and released their update within 24 hours of my problem report. I think I just got lucky, but it was still nice. I was able to install the update in less than 30 minutes and it definitely fixed the crash problem.

Another example of why support is even more important than code features. DevExpress has great support like this too, and it's the main reason I use their stuff. After all, the reason I'm paying for 3rd party components is so I don't have to deal with that part of the code. I don't want to spend my limited time writing stuff like docking managers. So it's nice when the 3rd party takes this kind of responsibility for supporting their code.
Reply with quote
Display posts from previous:   
Post new topic   Reply to topic     Home » Forums » Zugg's Blog All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
© 2009 Zugg Software. Hosted on Wolfpaw.net