library Project1;uses SysUtils, Classes, Windows, Messages,Graphics, Controls, Db, ADODB; {$R *.RES}Function shihuafei(shichang:integer;ADOC:TADOConnection):currency ;stdcall; var ADOT:Tadotable; qsd:integer; qfl:Currency ; hsd:integer; hfl:Currency ;begin ADOT:=TADOTable.create(nil); ADoT.Connection:=Adoc; Adot.TableName:='syscfg'; Adot.Active :=True; AdoT.Locate('note','市话前几分钟计费时间段',[loPartialKey]); qsd:=strtoint(Adot.fieldbyname('syscfg').asstring); AdoT.Locate('note','市话前3分钟费率',[loPartialKey]); qfl:=strtocurr(Adot.fieldbyname('syscfg').Asstring); AdoT.Locate('note','市话几分钟后的计费时间段',[loPartialKey]); hsd:=strtoint(Adot.fieldbyname('syscfg').asstring); AdoT.Locate('note','市话以后每分钟费率',[loPartialKey]); hfl:=strtocurr(Adot.fieldbyname('syscfg').asstring); ADOT.free; if shichang<=qsd then Result:= qfl else if ((shichang-qsd) mod hsd)<>0 then result:= ((shichang-qsd) div hsd +1)* hfl + qfl else result:= ((shichang-qsd) div hsd)* hfl + qfl; end; exports shihuafei;end.
ADOT:=TADOTable.create(nil);nil 不会对释放什么的有影响吧?
不行啊! Access Violation at address 77991485 in module 'oldaut32.dll'.read of address 0013c000 //----------------------代码如下-------------------------------- library Account;uses SysUtils, Classes, ADOdb;type {$R *.RES}function GetAccountInfo(ADOCnn: TADOConnection; uAccount, uPassword: WideString; out uStaffId: integer; uName: WideString): integer; stdcall; var AdoQry: TAdoQuery; begin Result := 1; if (not length(uAccount) > 0) and (not length(uPassword) > 0) then begin Result := 1; exit; end; if ADOCnn.Connected then begin AdoQry := TAdoQuery.Create(nil); with AdoQry do begin Connection := AdoCnn; Close; SQL.Clear; SQL.Add('select * from Vacc0204_ActiveAcountInfo where Account=' + '''' + uAccount + '''' + ' and uPassword=' + '''' + uPassword + ''''); try Open; if RecordCount > 0 then begin First; uStaffId := FieldByName('StaffID').asinteger; uName := FieldByName('Pname').asstring; Result := 0; end else begin Result := 1; end; except Result := 1; end; Close; Free; end; end else Result := 1; end;exports GetAccountInfo; beginend.
dll可以建立自己的datamodule吗?
谢谢!
各位有没有这方面的经验。
[email protected]
thanks
SysUtils,
Classes,
Windows, Messages,Graphics, Controls,
Db, ADODB;
{$R *.RES}Function shihuafei(shichang:integer;ADOC:TADOConnection):currency ;stdcall;
var
ADOT:Tadotable;
qsd:integer;
qfl:Currency ;
hsd:integer;
hfl:Currency ;begin
ADOT:=TADOTable.create(nil);
ADoT.Connection:=Adoc;
Adot.TableName:='syscfg';
Adot.Active :=True; AdoT.Locate('note','市话前几分钟计费时间段',[loPartialKey]);
qsd:=strtoint(Adot.fieldbyname('syscfg').asstring);
AdoT.Locate('note','市话前3分钟费率',[loPartialKey]);
qfl:=strtocurr(Adot.fieldbyname('syscfg').Asstring);
AdoT.Locate('note','市话几分钟后的计费时间段',[loPartialKey]);
hsd:=strtoint(Adot.fieldbyname('syscfg').asstring);
AdoT.Locate('note','市话以后每分钟费率',[loPartialKey]);
hfl:=strtocurr(Adot.fieldbyname('syscfg').asstring);
ADOT.free;
if shichang<=qsd then Result:= qfl
else if ((shichang-qsd) mod hsd)<>0 then result:= ((shichang-qsd) div hsd +1)* hfl + qfl
else result:= ((shichang-qsd) div hsd)* hfl + qfl;
end;
exports
shihuafei;end.
Access Violation at address 77991485 in module 'oldaut32.dll'.read of address 0013c000
//----------------------代码如下--------------------------------
library Account;uses
SysUtils,
Classes,
ADOdb;type
{$R *.RES}function GetAccountInfo(ADOCnn: TADOConnection; uAccount, uPassword: WideString; out uStaffId: integer; uName: WideString): integer; stdcall;
var
AdoQry: TAdoQuery;
begin
Result := 1;
if (not length(uAccount) > 0) and (not length(uPassword) > 0) then
begin
Result := 1;
exit;
end; if ADOCnn.Connected then
begin
AdoQry := TAdoQuery.Create(nil);
with AdoQry do
begin
Connection := AdoCnn;
Close;
SQL.Clear;
SQL.Add('select * from Vacc0204_ActiveAcountInfo where Account=' + '''' + uAccount + '''' + ' and uPassword=' + '''' + uPassword + '''');
try
Open;
if RecordCount > 0 then
begin
First;
uStaffId := FieldByName('StaffID').asinteger;
uName := FieldByName('Pname').asstring;
Result := 0;
end
else begin
Result := 1;
end;
except
Result := 1;
end;
Close;
Free;
end;
end
else Result := 1;
end;exports
GetAccountInfo;
beginend.