一个麻烦的问题,使用ODBC API在XP环境下引起标准控件崩溃, ( 积分: 100 )

  • 主题发起人 主题发起人 wiseinfo
  • 开始时间 开始时间
W

wiseinfo

Unregistered / Unconfirmed
GUEST, unregistred user!
大家可以在这里下载这个,使用ODBC API刷新本地局域网内SQL服务器的组件
http://www.2ccc.com/article.asp?articleid=2798
主要是这些来实现
Function SQLAllocHandle(HandleType: SmallInt; InHandle: Pointer; OutHandle: PPointer): SmallInt; stdcall; external 'odbc32.dll' name 'SQLAllocHandle';
Function SQLSetEnvAttr(EnvHandle: Pointer; Attribute: LongInt; Value: Integer; StringLength: LongInt): SmallInt; stdcall; external 'odbc32.dll' name 'SQLSetEnvAttr';
function SQLBrowseConnect(HDBC: Pointer; szConnStrIn: Pchar; cbConnStrIn: SmallInt; szConnStrOut: PChar; cbConnStrOutMax: SmallInt; pcbConnStrOut: Pointer): SmallInt; stdcall; external 'odbc32.dll' name 'SQLBrowseConnect';
function SQLDisconnect(ConHandle: Pointer): SmallInt; stdcall; external 'odbc32.dll' name 'SQLDisconnect';
function SQLFreeHandle(HandleType: SmallInt; Handle: Pointer): SmallInt; stdcall; external 'odbc32.dll' name 'SQLFreeHandle';

大家注意了,我以前也用此方法来实现,但是一个致使的问题是,
如果你用.manifest来实现XP效果,在XP操作系统中,获取列表,当前程序中WIN32的控件,如TOOLBAR,PAGECONTROL,STATBAR这些控件就崩溃了,大家可以在XP环境,Hr168例子上加个TOOLBAR控件,再在演示目录放个的Project1.exe.manifest,再运行EXE,获取列表后,TOOLBAR控件就没有,这个知道是ODBC API在WINXP的BUG,还是DELPHI的BUG???

注意,这个问题广泛存在,我还发现另一种关系到ODBC情况也有这问题,我是引用这个例子给大家参考,别一种情况http://www.delphibbs.com/delphibbs/dispq.asp?lid=3216354
 
大家可以在这里下载这个,使用ODBC API刷新本地局域网内SQL服务器的组件
http://www.2ccc.com/article.asp?articleid=2798
主要是这些来实现
Function SQLAllocHandle(HandleType: SmallInt; InHandle: Pointer; OutHandle: PPointer): SmallInt; stdcall; external 'odbc32.dll' name 'SQLAllocHandle';
Function SQLSetEnvAttr(EnvHandle: Pointer; Attribute: LongInt; Value: Integer; StringLength: LongInt): SmallInt; stdcall; external 'odbc32.dll' name 'SQLSetEnvAttr';
function SQLBrowseConnect(HDBC: Pointer; szConnStrIn: Pchar; cbConnStrIn: SmallInt; szConnStrOut: PChar; cbConnStrOutMax: SmallInt; pcbConnStrOut: Pointer): SmallInt; stdcall; external 'odbc32.dll' name 'SQLBrowseConnect';
function SQLDisconnect(ConHandle: Pointer): SmallInt; stdcall; external 'odbc32.dll' name 'SQLDisconnect';
function SQLFreeHandle(HandleType: SmallInt; Handle: Pointer): SmallInt; stdcall; external 'odbc32.dll' name 'SQLFreeHandle';

大家注意了,我以前也用此方法来实现,但是一个致使的问题是,
如果你用.manifest来实现XP效果,在XP操作系统中,获取列表,当前程序中WIN32的控件,如TOOLBAR,PAGECONTROL,STATBAR这些控件就崩溃了,大家可以在XP环境,Hr168例子上加个TOOLBAR控件,再在演示目录放个的Project1.exe.manifest,再运行EXE,获取列表后,TOOLBAR控件就没有,这个知道是ODBC API在WINXP的BUG,还是DELPHI的BUG???

注意,这个问题广泛存在,我还发现另一种关系到ODBC情况也有这问题,我是引用这个例子给大家参考,别一种情况http://www.delphibbs.com/delphibbs/dispq.asp?lid=3216354
 
好,帮顶



--------签名档---------------------------

比肩国内顶尖源码下载站点 -> 源码我爱你

http://www.source520.com
http://www.source520.net

80G源码电子书免费免注册下载,大量精辟技术文档库随时更新
******************************************************************
附:为了站点持续发展,现有本站近年来收藏的大量大型商业源码低价出售,
详情请进入以下链接查看:
http://www.source520.com/building_delphi.htm

浏览商业代码请从如下URL进入查看实物:
1.商业源码库1: ftp://source520see3:browse@61.152.199.245/
2.商业源码库2: ftp://source520see2:browse@61.152.199.245/
 
后退
顶部