以下是在COM中实现的方法。你可以参考一下 {返回数据集} function Tmycom.query(const sqlstr, tablename: WideString): WideString; var i:integer; begin result:=''; with dm.ADOQ do begin if active then active:= false; sql.Clear ; sql.Add('select * from '+TableName+' where '+sqlstr); open; First; // while not Eof do begin result:=result+fieldbyname('id').AsString +sSperField+fieldbyname('dictcode').AsString +sSperField+fieldbyname('dictname').AsString+sSperField+fieldbyname('dictclass').AsString +sSperField+fieldbyname('chndictclass').AsString+sSperLine; Next; // end; end; end; function Tmycom.IsExist(const sqlstr, tablename: WideString): SYSINT; begin with dm.ADOQ do begin sql.Clear ; sql.Add('select * from '+tablename+' where '+sqlstr); execsql; active:=true; end; if dm.ADOQ.RecordCount<>0 then result:=1 else result:=0; end;initialization TTypedComObjectFactory.Create(ComServer, Tmycom, Class_mycom, ciMultiInstance, tmApartment); end.
com: new->Active Library->new->active server object。 然后添加一个过程: procedure TAspObj1.WriteCap(var Cap: OleVariant); begin Cap:='I am Chordy'; end; 调用: procedure TForm2.Button1Click(Sender: TObject); var aspobj:IAspObj1;aa:OleVariant; begin aspobj:=coAspObj1.Create; aspobj.WriteCap(aa); button1.caption:=aa; end;
{返回数据集}
function Tmycom.query(const sqlstr, tablename: WideString): WideString;
var i:integer;
begin
result:='';
with dm.ADOQ do
begin
if active then
active:= false; sql.Clear ;
sql.Add('select * from '+TableName+' where '+sqlstr);
open; First; //
while not Eof do
begin
result:=result+fieldbyname('id').AsString +sSperField+fieldbyname('dictcode').AsString
+sSperField+fieldbyname('dictname').AsString+sSperField+fieldbyname('dictclass').AsString
+sSperField+fieldbyname('chndictclass').AsString+sSperLine;
Next; //
end;
end;
end;
function Tmycom.IsExist(const sqlstr, tablename: WideString): SYSINT;
begin
with dm.ADOQ do
begin
sql.Clear ;
sql.Add('select * from '+tablename+' where '+sqlstr);
execsql;
active:=true;
end;
if dm.ADOQ.RecordCount<>0 then
result:=1
else
result:=0;
end;initialization
TTypedComObjectFactory.Create(ComServer, Tmycom, Class_mycom,
ciMultiInstance, tmApartment);
end.
然后添加一个过程:
procedure TAspObj1.WriteCap(var Cap: OleVariant);
begin
Cap:='I am Chordy';
end;
调用:
procedure TForm2.Button1Click(Sender: TObject);
var aspobj:IAspObj1;aa:OleVariant;
begin
aspobj:=coAspObj1.Create;
aspobj.WriteCap(aa);
button1.caption:=aa;
end;