dll工程那一大段注释说的也很明白了
如果非要使用string类型,则需要在dll工程和调用该dll的工程中都最先引用 shareMem单元.但是我不想使用string,所以使用了pchar来代替
我的一个dll中有关于对数据库操作的一个函数,参数是pchar类型:function GetSysUser(AuserID,Apassword:pchar):olevariant;overload;返回的是一个满足查询结果的数据集function TsysUserLib.GetSysUser(AuserID,Apassword:pchar):olevariant;
begin
with sysuserDM do
try
if not ADOConnection1.Connected then
ADOConnection1.Connected:=true; //连接
with adoqsysUser do
begin
close;
sql.clear;
sql.add('select * from sys_user where userID=:tmpUserID and userPwd=:tmpUserPwd');
parameters.ParamByName('tmpUserID').Value:=AuserID; //问题在这里,提示variant和pchar不匹配
parameters.ParamByName('tmpUserPwd').Value:=Apassword; //问题在这里,提示variant和pchar不匹配
open;
result:=Dsp_sysuser.data;
end;
finally
ADOConnection1.Connected:=false; //关闭连接
end;
end;
上面的 parameters.ParamByName('tmpUserID').Value 类型是variant的,但我的参数是pchar的。所以提示不匹配..我想知道如何解决这样的问题? 难道非要设定参数也为variant类型的才能解决问题吗??
如果非要使用string类型,则需要在dll工程和调用该dll的工程中都最先引用 shareMem单元.但是我不想使用string,所以使用了pchar来代替
我的一个dll中有关于对数据库操作的一个函数,参数是pchar类型:function GetSysUser(AuserID,Apassword:pchar):olevariant;overload;返回的是一个满足查询结果的数据集function TsysUserLib.GetSysUser(AuserID,Apassword:pchar):olevariant;
begin
with sysuserDM do
try
if not ADOConnection1.Connected then
ADOConnection1.Connected:=true; //连接
with adoqsysUser do
begin
close;
sql.clear;
sql.add('select * from sys_user where userID=:tmpUserID and userPwd=:tmpUserPwd');
parameters.ParamByName('tmpUserID').Value:=AuserID; //问题在这里,提示variant和pchar不匹配
parameters.ParamByName('tmpUserPwd').Value:=Apassword; //问题在这里,提示variant和pchar不匹配
open;
result:=Dsp_sysuser.data;
end;
finally
ADOConnection1.Connected:=false; //关闭连接
end;
end;
上面的 parameters.ParamByName('tmpUserID').Value 类型是variant的,但我的参数是pchar的。所以提示不匹配..我想知道如何解决这样的问题? 难道非要设定参数也为variant类型的才能解决问题吗??
parameters.ParamByName('tmpUserID').Value:=StrPas(AuserID)
在過程的開始請加上: CoInitialize(nil); 過程處理完帶上:CoUninitialize; string(AuserID) , 這樣也行, strPas 處理也可以。 parameters.ParamByName('tmpUserID').Value:= strPas(AuserID); //问题在这里,提示variant和pchar不匹配
parameters.ParamByName('tmpUserPwd').Value:= strPas(Apassword); //问题在这里,提示variant和pchar不匹配