从网上找了一个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.)
我个人觉得是不能正常读取服务器配置信息所致.
请大家帮忙分析分析原因,还有如何解决编码乱码问题.