telling the difference between BDE drivers and ODBC drivers


I have a component descended from TDataSet which uses ADO for ODBC
connectivity, thereby bypassing the clumsy BDE.

There are two ways of selecting a database.  Either by specifying a DSN or
an ODBC driver and a TableName.
One property is called "DriverName" which is the ODBC driver, another
property is DSN.  Both of these are strings.  Each has a corresponding
TStringProperty descendant to provide a drop-down list at design-time.
Currently, the way I do it is as follows:
For the Driver property I use Session.GetDriverNames to retrieve all drivers
and then Session.GetDriverParams for each to check for the existence of the
"ODBC DSN" parameter.
For the DSN property, I use Session.GetAliasNames, then
Session.GetAliasParams for each also to check for the existence of the "ODBC
DSN" property.

This works on my machine.  All the ODBC drivers and ODBC DSNs have an "ODBC
DSN" parameter, and none of the BDE aliases do.

My question is: Can I trust this?  Is there a better way to obtain just ODBC
driver names and just ODBC DSNs without also retrieving BDE aliases?



Other Info:
 IDE = Delphi 4 Pro (Web Update #2)
ADO version 1.5
ODBC verison 3.510.3002.13

P.S. If replying to email address, remove "SpamFree".