Archive for January, 2010

IBObjects, Firebird and “request synchronization” Errors

Tuesday, January 19th, 2010

I have been in the process of migrating my applications from an older version of IBOjects to version 4.8.6.  Not the latest version but good enough for my purposes.  Anyway, in certain circumstances, one of my applications started throwing “request synchronization error” exceptions. It never did this when running under the older version of IBObjects.  I spent quite a bit of time debugging my application and IBOjects trying to find a reason for the error with no luck.  Finally, just for something to try, I replaced fbclient.dll with the latest version and the problem is now gone.  Go figure!

Getting the List of Configured DNS Servers

Wednesday, January 13th, 2010

If you ever find yourself in a position where you need to know that IP addresses of the DNS servers configured on a Windows system just use the GetNetworkParams Windows API call.  This is not implemented in the Delphi 2007 component library, but luckily it is implemented in the Jedi Code library.

Custom Variant Wrapper for TDataset - Part 6

Wednesday, January 6th, 2010

In Part 5 we discussed casting our custom variant to and from other data types.  In this part we will discuss implementing dynamic functions and procedures.   Dynamic functions are implemented by overriding TPublishableVariantType.DoFunction and dynamic procedures are implemented by overriding TPublishableVariantType.DoProcedure.


Custom Variant Wrapper for TDataset - Part 5

Monday, January 4th, 2010

In Part 4 I showed you how to get and set dynamic properties of our custom variant.  In this part I will show how custom variants can be cast to and from other data types.


Custom Variant Wrapper for TDataset - Part 4

Friday, January 1st, 2010

In Part 3 we discussed clearing and copying our custom variant.  Next I am going to show you how to implement dynamic properties for our TDataset wrapper.  If you remember from the introduction to this series of articles, I wanted to be able to get the value of a dataset’s fields’ values using the name of the field as the property name.  Like this: variant.field_name.