Delphi用CT-LIB写程序连接sybase时ct_connect()失败

yanzhuo123 2013-07-11 09:53:03
从网上找了一个CT-LIB的Delphi代码,在执行到ct_connect()连接失败,如下:

这个自己跳出的出错信息除了能看得清Message: 3, Severity: 5, Origin: 8,其它的偏偏是乱码。
代码如下:
// Connect to server
ret := ct_connect(connection, pChar(server.text), CS_NULLTERM);
if ret = CS_SUCCEED then
begin
Form1.Caption := 'Connected to ' + server.text;
end
上面的截图是在执行ret := ct_connect(connection, pChar(server.text), CS_NULLTERM);
出现的。

上面代码中的server.txt的值与sql.ini的"GCISBPC"一样的。(是否这个设置得不对?)
我怀疑是不是不能正确获取配置文件ini/sql.ini里的信息
[GCISBPC]
master=NLWNSCK,GCISERVER12,5001
query=NLWNSCK,GCISERVER12,5001
........
,我特意把server.txt乱填,出现的提示跟上面截图一样。而ini目录下的配置文件,我安的Sybase_sqladv,也是用的同一套DLL和同一套ini文件,是能正确连接上Sybase数据库的.

另说明,这上面的代码之前,只进行了如下代码:
global.pas中:
function ct_connect; external 'libct.dll';
function ct_cmd_props; external 'libct.dll';

本pas中:
...
// Set login name
ret := ct_con_props(connection, CS_SET, CS_USERNAME, pChar(user.text), CS_NULLTERM, outlen);
...
// Set password
ret := ct_con_props(connection, CS_SET, CS_PASSWORD, pChar(passwd.text), CS_NULLTERM, nil);
...
// Set application name
ret := ct_con_props(connection, CS_SET, CS_APPNAME, PChar('CTLIB_TEST'), CS_NULLTERM, nil);
....
// Set host name
ret := ct_con_props(connection, CS_SET, CS_HOSTNAME, PChar('LXM-PC'), CS_NULLTERM, nil);
...

我本地只使用了sqladv这个免安装的连接工具,没有安装过其它的Sybase客户端,由于sqladv能正常连接成功,且我把它下面的dll与ini文件夹复制到Delphi程序目录上,配置好了SYBASE环境变量,上面程序的各ct_con_props能成功执行返回CS_SUCCEED,到ct_connect语句,ret才返回CS_FAIL(手册上是指The routine failed.)

我个人觉得是不能正常读取服务器配置信息所致.
请大家帮忙分析分析原因,还有如何解决编码乱码问题.
...全文
509 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
iihero 2013-07-12
  • 打赏
  • 举报
回复
配置好了SYBASE环境变量? SYBASE_OCS呢? 你还是安装一份ASE的客户端,再测你的应用比较保险。

2,596

社区成员

发帖
与我相关
我的任务
社区描述
Sybase相关技术讨论区
社区管理员
  • Sybase社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧