如题,我写了一个dll项目,其中包括n个过程和函数,而某个函数需要调用其中一个过程,结果调用时说,Undeclared identifier: 'xxx',源码如下:请各们大侠指教! //获取帐号信息
procedure checkAccount(const AccountCode:string;const Password:string);
var sqlstr:string;
var qry_ck:TADOQuery;
begin
sqlstr:='SELECT Sms_Account.AccountPassword, Sms_Account.AccountCode, '
+' Sms_Account.ID '
+'FROM Sms_Account INNER JOIN '
+' Sms_Client ON Sms_Account.AccountType = Sms_Client.ID '
+'WHERE (Sms_Account.AccountPassword = ''+Password+'') AND (Sms_Account.AccountCode = ''+AccountCode+'')';
ExecuteSQL(qry_ck,sqlstr);///目前这里报错!!
end; function ReadIni(const FileName:string;const Section:string;const Field:string;const def:string):string;
var Sms_ini:TIniFile;
begin
Result:=def;
try Sms_ini:=TIniFile.Create(FileName );
Result:=Sms_ini.ReadString(Section,Field,def); finally
FreeAndNil(Sms_ini);
end end;
function ExecuteSQL(adoQuery: TADOQuery; strSQL: string): Boolean;
var connstr:string;
begin
Result := False;
adoQuery.Close;
adoQuery.SQL.Clear;
try
connstr:=ReadIni(ExtractFilePath(ParamStr(0))+iniFileName,'DBConn','ConnectionString','' ) ; //估计这里会报错!
except
connstr:='';
end;
if connstr='' then Exit; //连接字符无效 adoQuery.ConnectionString:=connstr;
adoQuery.SQL.Add(strSQL);
try
adoQuery.Open;
Result := adoQuery.Active; except
adoQuery.Close;
end;
end;
procedure checkAccount(const AccountCode:string;const Password:string);
var sqlstr:string;
var qry_ck:TADOQuery;
begin
sqlstr:='SELECT Sms_Account.AccountPassword, Sms_Account.AccountCode, '
+' Sms_Account.ID '
+'FROM Sms_Account INNER JOIN '
+' Sms_Client ON Sms_Account.AccountType = Sms_Client.ID '
+'WHERE (Sms_Account.AccountPassword = ''+Password+'') AND (Sms_Account.AccountCode = ''+AccountCode+'')';
ExecuteSQL(qry_ck,sqlstr);///目前这里报错!!
end; function ReadIni(const FileName:string;const Section:string;const Field:string;const def:string):string;
var Sms_ini:TIniFile;
begin
Result:=def;
try Sms_ini:=TIniFile.Create(FileName );
Result:=Sms_ini.ReadString(Section,Field,def); finally
FreeAndNil(Sms_ini);
end end;
function ExecuteSQL(adoQuery: TADOQuery; strSQL: string): Boolean;
var connstr:string;
begin
Result := False;
adoQuery.Close;
adoQuery.SQL.Clear;
try
connstr:=ReadIni(ExtractFilePath(ParamStr(0))+iniFileName,'DBConn','ConnectionString','' ) ; //估计这里会报错!
except
connstr:='';
end;
if connstr='' then Exit; //连接字符无效 adoQuery.ConnectionString:=connstr;
adoQuery.SQL.Add(strSQL);
try
adoQuery.Open;
Result := adoQuery.Active; except
adoQuery.Close;
end;
end;
解决方案 »
- 请问在用TTimer类时(设置间隔为1分钟),如果我的操作1需要运行5分钟,操作2运行8分钟,那么一个timer会发生什么情况?
- 有关rave报表设计的问题
- delphi7调用com总是报这个错?
- 如何枚举出系统中的所有串口
- 怎样把一个数据库里的表全列出来?
- 如何在MDI的主窗口非客户区显示图像或信息?
- 向美国商品索要发票
- 请问有谁知道delphi6的复活节彩蛋吗?
- 我在窗体中加了两个RxGIFAnimator1, RxGIFAnimator2 控件,为什么不能同时播放两个动画, 一运行就死机。
- 高分求教:updatesql如果实现动态sql编程
- 制作椭圆的问题
- 奇怪pchar类型,按引用传递
first unit in your library's USES clause AND your project's (select
Project-View Source) USES clause if your DLL exports any procedures or
functions that pass strings as parameters or function results. This
applies to all strings passed to and from your DLL--even those that
are nested in records and classes. ShareMem is the interface unit to
the BORLNDMM.DLL shared memory manager, which must be deployed along
with your DLL. To avoid using BORLNDMM.DLL, pass string information
using PChar or ShortString parameters. }uses
ShareMem, SysUtils, ADODB, Classes,IniFiles;{$R *.res}const
iniFileName:string='sms.ini' ;
var
conn_ado:TADOConnection;
clientName:string='';
clientID:Integer;
accountID:string;
TaskID:Integer;
qry_main:TADOQuery;这 是文件的头部