开发Com,服务器接受客户端的数据传输TstringList对象会不会有问题? (200分)

  • 主题发起人 主题发起人 zhengzhijia
  • 开始时间 开始时间
Z

zhengzhijia

Unregistered / Unconfirmed
GUEST, unregistred user!
修改后:
开发Com,服务器接受客户端的数据传输TstringList对象会不会有问题?
通过昨天的讨论我觉得我只能开发一个中间服务器!但现在由于参数比较多,我想传输
TSTRINGLIST对象,不知道可不可以??
原题:
如何在dll 中输出自定义的类?
由于两个公司在开发接口,所以我必须给他们提供dll 或者 com+
我在程序中通过类实现了功能,不知如何如何在dll 中输出自定义的类?
 
大家看了都帮顶一下,顶者有奖
 
我只知道在dll 中输出带有自定义的类的函数或过程。然后在引用这些函数或过程的时候需要定义含有自定义的类的接口单元。
其它的就不知道了.
 
直接输出函数,那再没有创建类之前不是会出问题吗?
 
如何输出下面这个类
unit UAccountInterFace;
{
凭证类
2003-12-02
zzj
}
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls,
Dialogs, StdCtrls, DB, ADODB, Grids, ExtCtrls, Mask, DBCtrls;
type
TAccount = class(Tobject)
public
//提交整个数据集
function InsertOneSubAcc(
iCYEAR:string;//(20) Y 年度
iCPERIOD:string;//(10) Y 会计期间
iCVTSHORTNAME:string;//(10) Y 凭证类别字
iCSIGN:string;//(20) Y 凭证号
iCVOUCHEORG:string;//(20) Y 会计单位
iCMAKEORG:string;//(20) Y 制定部门
iDINdate:string;//( Y 输入日期
iDMAKEdate:string;//( Y 制定日期
iIDOC:string;//(3) Y 附单据数
iCMAKEUSE:string;//(20) Y 制单人
iCCOMDIG:string;//(150) Y 共同摘要
// ----------------------------------------------------
iCSUBNUM:string;//(10) Y 分录序号1
iCSUBORG:string;//(20) Y 分录会计单位
iCSUBDIG:string;//(150) Y 分录摘要1
iCSUBJCODE:string;//(20) Y 会计科目1
iCEXCH_NAME:string;//(20) Y 币种1
iIDEB:string;//(20,2) Y 借)方金额1
iICRE:string;//(20,2) Y 贷方金额1
iINUMDEB:string;//(20,2) Y 数量1
// ------------------------------------------------------
iCBLATTYPE:string;//(20) Y 结算方式
iCBILLNUM:string;//(30) Y 票号2
iDTERMDAY:string;//( Y 支付日期2
iIINTRATE:string;//(20,10) Y 利息率
iCBANKNAME:string;//(20) Y 银行名称
iCBANKNUM:string;//(20) Y 账户编号
iDEMTDAY:string;//( Y 发行日
iDMATURITY:string;//( Y 到期日
iDGATHERDAY:string;//( Y 预计收款日
iCTERM:string;//(20) Y 期限
iCEMTCOMP:string;//(50) Y 发行社
iCCUSTCODE:string;//(20) Y 客户编码
iCCUSTNAME:string;//(20) Y 客户名
iITAXRATE:string;//(20,2) Y 税率-
iCITEMCODE1:string;//(20) Y 管理项目编码1
iCSUBCODE1:string;//(20) Y 管理项目详细编码1
iCSUBNAME1:string;//(20) Y 管理项目详细名称1
iCITEMCODE2:string;//(20) Y 管理项目编码2
iCSUBCODE2:string;//(20) Y 管理项目详细编码2
iCSUBNAME2:string;//(20) Y 管理项目详细名称2
iCITEMCODE3:string;//(20) Y 管理项目编码3
iCSUBCODE3:string;//(20) Y 管理项目详细编码3
iCSUBNAME3:string;//(20) Y 管理项目详细名称3
iCITEMCODE4:string;//(20) Y 管理项目编码4
iCSUBCODE4:string;//(20) Y 管理项目详细编码4
iCSUBNAME4:string;//(20) Y 管理项目详细名称4
// ---------------------------------20031130 11:28 Add----------------------------
iIsExport:string;// -- 0内销/1外销:标示是内销还是免税,在页面上显示是‘内销’or‘免税’
iMaterialNo:string;//商品编号/商品名称:标示商品的名称,在页面上显示商品编号和商品名称
iOutStockDate:string;// --出货日:日期
iContractNo:string;//合同号:50位字符
iShippingDate:string;// --装船日:日期
iArriveDate:string// --靠港日:日期
):integer;

//提交整个数据集
Function CommitAccount(ICSIGN,ICYEAR :string;
//年度
ICPERIOD :string;
//期间
Icvtshortname, ILOGINUSER :string):integer;
//凭证生成
function CreateAccount:integer;
//插入一行数据
procedure AddData(ItemsList:TStringList);
//构造函数
constructor Create(AControl: TControl);
virtual;
destructor Destroy;
virtual;
private
FSubSum:integer;
//分录的个数;
FStrGrdData :TstringGrid;
Fconnection: TADOConnection;
// 联结
FprocInsertOne:TADOStoredProc;
//过程1
FprocCommit:TADOStoredProc;
//过程2
procedure Setconnection(const Value: TADOConnection);
//数据源
procedure SetInsertOneParam;
//设置分录过程参数
procedure SetCommitParam;
//设置提交过程参数
procedure ShowResultMessage(Iresult:integer);
published
property Connection : TADOConnection read Fconnection write Setconnection;
//数据连接
end;

TPosAccount = class(TAccount)
end;
TVAccount = class of TAccount;
implementation
uses UAccountMessage;

constructor TAccount.Create(AControl: TControl);
begin
FSubSum := 0;
//
FprocInsertOne := TADOStoredProc.Create(nil);
FprocCommit := TADOStoredProc.Create(nil);
//
FStrGrdData := TStringGrid.Create(nil);
FStrGrdData.FixedCols := 0;
FStrGrdData.FixedRows := 0;
FStrGrdData.RowCount := 1;
FStrGrdData.ColCount := 51;
FStrGrdData.Options := FStrGrdData.Options + [goEditing]
end;

destructor TAccount.Destroy;
begin
FStrGrdData.Free;
FprocInsertOne.Free;
FprocCommit.Free;
end;

procedure TAccount.AddData(ItemsList: TStringList);
var
i,j:integer;
begin

FSubSum := FSubSum + 1;
//添加一行数据到内部变量里
for i := 0 to 50do
FStrGrdData.Cells[i,FSubSum-1] := Itemslist.Strings;
FStrGrdData.RowCount := FStrGrdData.RowCount + 1;
end;

function TAccount.CreateAccount: integer;
var
i,j:integer;//循环变量
iResult :integer;
//返回值
begin

{
for j := 0 to fsubsum -1do
for i := 0 to 50do
showmessage(FStrGrdData.Cells[i,j]);
}
//创建凭证
//开始事务处理
Fconnection.begin
Trans;
//插入一条分录
for i:= 0 to FSubSum - 1do
begin
with FStrGrdDatado
iResult := InsertOneSubAcc
(
cells[0,i],Cells[1,i],Cells[2,i],Cells[3,i],Cells[4,i],Cells[5,i],Cells[6,i],
Cells[7,i],Cells[8,i],Cells[9,i],Cells[10,i],Cells[11,i],Cells[12,i],
Cells[13,i],Cells[14,i],Cells[15,i],Cells[16,i],Cells[17,i],Cells[18,i],
Cells[19,i],Cells[20,i],Cells[21,i],Cells[22,i],Cells[23,i],Cells[24,i],
Cells[25,i],Cells[26,i],Cells[27,i],Cells[28,i],Cells[29,i],Cells[30,i],
Cells[31,i],Cells[32,i],Cells[33,i],Cells[34,i],Cells[35,i],Cells[36,i],
Cells[37,i],Cells[38,i],Cells[39,i],Cells[40,i],Cells[41,i],Cells[42,i],
Cells[43,i],Cells[44,i],Cells[45,i],Cells[46,i],Cells[47,i],Cells[48,i],
Cells[49,i],Cells[50,i]
);
if iresult <> 0 then
begin
ShowResultMessage(iResult);
Fconnection.RollbackTrans;
exit;
end;
end ;

//提交数据
iResult := 0;
with FStrGrdDatado
iResult := CommitAccount(Cells[3,0],Cells[0,0],Cells[1,0],Cells[2,0],Cells[9,0] ) ;
if iResult <> 0 then
begin
ShowResultMessage(iResult);
Fconnection.RollbackTrans;
end
else
begin
ShowResultMessage(iResult);
Fconnection.CommitTrans;
end;
end;

function TAccount.InsertOneSubAcc(iCYEAR, iCPERIOD, iCVTSHORTNAME, iCSIGN,
iCVOUCHEORG, iCMAKEORG, iDINdate, iDMAKEdate,
iIDOC, iCMAKEUSE, iCCOMDIG, iCSUBNUM, iCSUBORG, iCSUBDIG,
iCSUBJCODE, iCEXCH_NAME,iIDEB, iICRE, iINUMDEB,
iCBLATTYPE, iCBILLNUM, iDTERMDAY,iIINTRATE,
iCBANKNAME, iCBANKNUM,iDEMTDAY, iDMATURITY,
iDGATHERDAY,iCTERM, iCEMTCOMP, iCCUSTCODE,
iCCUSTNAME, iITAXRATE,iCITEMCODE1, iCSUBCODE1, iCSUBNAME1,
iCITEMCODE2, iCSUBCODE2, iCSUBNAME2, iCITEMCODE3, iCSUBCODE3, iCSUBNAME3,
iCITEMCODE4, iCSUBCODE4, iCSUBNAME4, iIsExport, iMaterialNo,
iOutStockDate, iContractNo, iShippingDate,
iArriveDate: string): integer;
begin
try
// 生成一条分录信息
with FprocInsertOnedo
begin
Parameters[1].Value := iCYEAR;
if trim(iCPERIOD) = '' then
Parameters[2].Value := null
else
Parameters[2].Value := strToInt(iCPERIOD);
Parameters[3].Value := iCVTSHORTNAME;
Parameters[4].Value := iCSIGN;
Parameters[5].Value := iCVOUCHEORG;
Parameters[6].Value := iCMAKEORG;
if trim(iDINdate) = '' then
Parameters[7].Value := null
else
Parameters[7].Value := StrToDate(iDINdate);
if trim(iDMAKEdate) = '' then
Parameters[8].Value := null
else
Parameters[8].Value := StrToDate(iDMAKEdate);
if trim(iIDOC) = '' then
Parameters[9].Value := null
else
Parameters[9].Value := strToInt(iIDOC);
Parameters[10].Value := iCMAKEUSE;
Parameters[11].Value := iCCOMDIG;
if trim(iCSUBNUM) = '' then
Parameters[12].Value := null
else
Parameters[12].Value := strToInt(iCSUBNUM);
Parameters[13].Value := iCSUBORG;
Parameters[14].Value := iCSUBDIG;
Parameters[15].Value := iCSUBJCODE;
Parameters[16].Value := iCEXCH_NAME;
if trim(iIDEB) = '' then
Parameters[17].Value := null
else
Parameters[17].Value := strToFloat(iIDEB);
if trim(iICRE) = '' then
Parameters[18].Value := null
else
Parameters[18].Value := strToFloat(iICRE);
if trim(iINUMDEB) = '' then
Parameters[19].Value := null
else
Parameters[19].Value := strToFloat(iINUMDEB);
Parameters[20].Value := iCBLATTYPE;
Parameters[21].Value := iCBILLNUM;
if trim(iDTERMDAY) = '' then
Parameters[22].Value := null
else
Parameters[22].Value := StrToDate(iDTERMDAY);
if trim(iIINTRATE) = '' then
Parameters[23].Value := null
else
Parameters[23].Value := strToFloat(iIINTRATE);
Parameters[24].Value := iCBANKNAME;
Parameters[25].Value := iCBANKNUM;
if trim(iDEMTDAY) = '' then
Parameters[26].Value := null
else
Parameters[26].Value := StrToDate(iDEMTDAY);
if trim(iDMATURITY) = '' then
Parameters[27].Value := null
else
Parameters[27].Value := StrToDate(iDMATURITY);
if trim(iDGATHERDAY) = '' then
Parameters[28].Value := null
else
Parameters[28].Value := StrToDate(iDGATHERDAY);
Parameters[29].Value := iCTERM;
Parameters[30].Value := iCEMTCOMP;
Parameters[31].Value := iCCUSTCODE;
Parameters[32].Value := iCCUSTNAME;
if trim(iITAXRATE) = '' then
Parameters[33].Value := null
else
Parameters[33].Value := strToFloat(iITAXRATE);
Parameters[34].Value := iCITEMCODE1;
Parameters[35].Value := iCSUBCODE1;
Parameters[36].Value := iCSUBNAME1;
Parameters[37].Value := iCITEMCODE2;
Parameters[38].Value := iCSUBCODE2;
Parameters[39].Value := iCSUBNAME2;
Parameters[40].Value := iCITEMCODE3;
Parameters[41].Value := iCSUBCODE3;
Parameters[42].Value := iCSUBNAME3;
Parameters[43].Value := iCITEMCODE4;
Parameters[44].Value := iCSUBCODE4;
Parameters[45].Value := iCSUBNAME4;
Parameters[46].Value := iIsExport;
Parameters[47].Value := iMaterialNo;
if trim(iOutStockDate) = '' then
Parameters[48].Value := null
else
Parameters[48].Value := StrToDate(iOutStockDate);
Parameters[49].Value := iContractNo;
if trim(iShippingDate) = '' then
Parameters[50].Value := null
else
Parameters[50].Value := StrToDate(iShippingDate);
if trim(iArriveDate) = '' then
Parameters[51].Value := null
else
Parameters[51].Value := StrToDate(iArriveDate);
Prepared := true;
ExecProc;
result := Parameters[0].Value;
end;
except
result := 999;
end;
end;

Function TAccount.CommitAccount(ICSIGN,ICYEAR :string;
//年度
ICPERIOD :string;
//期间
Icvtshortname, ILOGINUSER :string):integer;
begin
try
with FprocCommitdo
begin
Parameters[1].Value := ICSIGN;
Parameters[2].Value := ICYEAR;
Parameters[3].Value := StrToInt(ICPERIOD);
Parameters[4].Value := Icvtshortname;
Parameters[5].Value := ILOGINUSER;
Prepared := true;
ExecProc;
Result := Parameters[0].Value;
end;
except
result := 888
end;
end;

procedure TAccount.Setconnection(const Value: TADOConnection);
begin
Fconnection := Value;
FprocInsertOne.Connection := Fconnection;
FprocCommit.Connection := Fconnection;
SetCommitParam;
SetInsertOneParam;
end;

procedure TAccount.SetCommitParam;
begin
FprocInsertOne.ProcedureName := 'FINSERT_TEMPCW_ACCVOUCH' ;
with FprocInsertOne.Parameters.AddParameterdo
begin
Name :='Param1' ;
DataType :=ftInteger ;
Direction :=pdReturnValue ;
size := 0;
Value :=Null ;
end;
with FprocInsertOne.Parameters.AddParameterdo
begin
Name :='ICYEAR';
Attributes :=[paNullable] ;
DataType :=ftString ;
Size :=20 ;
Value :=Null ;
end;
with FprocInsertOne.Parameters.AddParameterdo
begin
Name :='ICPERIOD';
Attributes :=[paNullable];
DataType :=ftInteger ;
Size :=0 ;
Value :=Null ;
end ;
with FprocInsertOne.Parameters.AddParameterdo
begin
Name :='ICVTSHORTNAME';
Attributes :=[paNullable];
DataType :=ftString ;
Size :=20 ;
Value :=Null ;
end ;
with FprocInsertOne.Parameters.AddParameterdo
begin
Name :='ICSIGN' ;
Attributes :=[paNullable];
DataType :=ftString;
Size :=20 ;
Value :=Null ;
end;
with FprocInsertOne.Parameters.AddParameterdo
begin
Name :='ICVOUCHEORG' ;
Attributes :=[paNullable] ;
DataType :=ftString ;
Size :=20 ;
Value :=Null ;
end ;
with FprocInsertOne.Parameters.AddParameterdo
begin
Name :='ICMAKEORG' ;
Attributes :=[paNullable] ;
DataType :=ftString ;
Size :=20 ;
Value :=Null ;
end ;
with FprocInsertOne.Parameters.AddParameterdo
begin
Name :='IDINDATE' ;
Attributes :=[paNullable] ;
DataType :=ftDateTime ;
size := 0 ;
Value :=Null ;
end ;
with FprocInsertOne.Parameters.AddParameterdo
begin
Name :='IDMAKEDATE' ;
Attributes :=[paNullable] ;
DataType :=ftDateTime ;
size := 0 ;
Value :=Null ;
end ;
with FprocInsertOne.Parameters.AddParameterdo
begin
Name :='IIDOC' ;
Attributes :=[paNullable];
DataType :=ftInteger ;
Precision :=15 ;
Value :=Null ;
size := 0 ;
end ;
with FprocInsertOne.Parameters.AddParameterdo
begin
Name :='ICMAKEUSE' ;
Attributes :=[paNullable];
DataType :=ftString ;
Size :=21 ;
Value :=Null ;
end ;
with FprocInsertOne.Parameters.AddParameterdo
begin
Name :='ICCOMDIG' ;
Attributes :=[paNullable];
DataType :=ftString ;
Size :=21 ;
Value :=Null ;
end ;
with FprocInsertOne.Parameters.AddParameterdo
begin
Name :='ICSUBNUM' ;
Attributes :=[paNullable];
DataType :=ftString ;
Size :=21 ;
Value :=Null ;
end ;
with FprocInsertOne.Parameters.AddParameterdo
begin
Name :='ICSUBORG' ;
Attributes :=[paNullable];
DataType :=ftString ;
Size :=21 ;
Value :=Null ;
end ;
with FprocInsertOne.Parameters.AddParameterdo
begin
Name :='ICSUBDIG' ;
Attributes :=[paNullable];
DataType :=ftString ;
Size :=21 ;
Value :=Null ;
end ;
with FprocInsertOne.Parameters.AddParameterdo
begin
Name :='ICSUBJCODE' ;
Attributes :=[paNullable];
DataType :=ftString ;
Size :=21 ;
Value :=Null ;
end ;
with FprocInsertOne.Parameters.AddParameterdo
begin
Name :='ICEXCH_NAME' ;
Attributes :=[paNullable];
DataType :=ftString ;
Size :=21 ;
Value :=Null ;
end ;
with FprocInsertOne.Parameters.AddParameterdo
begin
Name :='IIDEB' ;
Attributes :=[paNullable];
DataType :=ftFloat ;
Precision :=15 ;
Size :=0 ;
Value :=Null ;
end ;
with FprocInsertOne.Parameters.AddParameterdo
begin
Name :='IICRE' ;
Attributes :=[paNullable];
DataType :=ftFloat ;
Precision :=15 ;
Size :=0 ;
Value :=Null ;
end ;
with FprocInsertOne.Parameters.AddParameterdo
begin
Name :='IINUMDEB' ;
Attributes :=[paNullable];
DataType :=ftFloat ;
Precision :=15 ;
Size :=0 ;
Value :=Null ;
end ;
with FprocInsertOne.Parameters.AddParameterdo
begin
Name :='ICBLATTYPE' ;
Attributes :=[paNullable];
DataType :=ftString ;
Size :=21 ;
Value :=Null ;
end ;
with FprocInsertOne.Parameters.AddParameterdo
begin
Name :='ICBILLNUM' ;
Attributes :=[paNullable];
DataType :=ftString ;
Size :=21 ;
Value :=Null ;
end ;
with FprocInsertOne.Parameters.AddParameterdo
begin
Name :='IDTERMDAY' ;
Attributes :=[paNullable];
DataType :=ftDateTime ;
Value :=Null ;
Size :=0 ;
end ;
with FprocInsertOne.Parameters.AddParameterdo
begin
Name :='IIINTRATE' ;
Attributes :=[paNullable];
DataType :=ftFloat ;
Precision :=15 ;
Size :=0 ;
Value :=Null ;
end ;
with FprocInsertOne.Parameters.AddParameterdo
begin
Name :='ICBANKNAME' ;
Attributes :=[paNullable];
DataType :=ftString ;
Size :=21 ;
Value :=Null ;
end ;
with FprocInsertOne.Parameters.AddParameterdo
begin
Name :='ICBANKNUM' ;
Attributes :=[paNullable] ;
DataType :=ftString ;
Size :=21 ;
Value :=Null ;
end ;
with FprocInsertOne.Parameters.AddParameterdo
begin
Name :='IDEMTDAY' ;
Attributes :=[paNullable] ;
DataType :=ftDateTime ;
Size :=0 ;
Value :=Null ;
end ;
with FprocInsertOne.Parameters.AddParameterdo
begin
Name :='IDMATURITY' ;
Attributes :=[paNullable];
DataType :=ftDateTime ;
Size :=0 ;
Value :=Null ;
end ;
with FprocInsertOne.Parameters.AddParameterdo
begin
Name :='IDGATHERDAY' ;
Attributes :=[paNullable];
DataType :=ftDateTime ;
Size :=0 ;
Value :=Null ;
end ;
with FprocInsertOne.Parameters.AddParameterdo
begin
Name :='ICTERM' ;
Attributes :=[paNullable];
DataType :=ftString ;
Size :=21 ;
Value :=Null ;
end ;
with FprocInsertOne.Parameters.AddParameterdo
begin
Name :='ICEMTCOMP' ;
Attributes :=[paNullable];
DataType :=ftString ;
Size :=21 ;
Value :=Null ;
end ;
with FprocInsertOne.Parameters.AddParameterdo
begin
Name :='ICCUSTCODE' ;
Attributes :=[paNullable];
DataType :=ftString ;
Size :=21 ;
Value :=Null ;
end ;
with FprocInsertOne.Parameters.AddParameterdo
begin
Name :='ICCUSTNAME' ;
Attributes :=[paNullable];
DataType :=ftString ;
Size :=21 ;
Value :=Null ;
end ;
with FprocInsertOne.Parameters.AddParameterdo
begin
Name :='IITAXRATE' ;
Attributes :=[paNullable];
DataType :=ftFloat ;
Precision :=15 ;
size := 0 ;
Value :=Null ;
end ;
with FprocInsertOne.Parameters.AddParameterdo
begin
Name :='ICITEMCODE1' ;
Attributes :=[paNullable];
DataType :=ftString ;
Size :=21 ;
Value :=Null ;
end ;
with FprocInsertOne.Parameters.AddParameterdo
begin
Name :='ICSUBCODE1' ;
Attributes :=[paNullable];
DataType :=ftString ;
Size :=21 ;
Value :=Null ;
end ;
with FprocInsertOne.Parameters.AddParameterdo
begin
Name :='ICSUBNAME1' ;
Attributes :=[paNullable];
DataType :=ftString ;
Size :=21 ;
Value :=Null ;
end ;
with FprocInsertOne.Parameters.AddParameterdo
begin
Name :='ICITEMCODE2' ;
Attributes :=[paNullable];
DataType :=ftString ;
Size :=21 ;
Value :=Null ;
end ;
with FprocInsertOne.Parameters.AddParameterdo
begin
Name :='ICSUBCODE2' ;
Attributes :=[paNullable];
DataType :=ftString ;
Size :=21 ;
Value :=Null ;
end ;
with FprocInsertOne.Parameters.AddParameterdo
begin
Name :='ICSUBNAME2' ;
Attributes :=[paNullable];
DataType :=ftString ;
Size :=21 ;
Value :=Null ;
end ;
with FprocInsertOne.Parameters.AddParameterdo
begin
Name :='ICITEMCODE3' ;
Attributes :=[paNullable] ;
DataType :=ftString ;
Size :=21 ;
Value :=Null ;
end ;
with FprocInsertOne.Parameters.AddParameterdo
begin
Name :='ICSUBCODE3' ;
Attributes :=[paNullable];
DataType :=ftString ;
Size :=21 ;
Value :=Null ;
end ;
with FprocInsertOne.Parameters.AddParameterdo
begin
Name :='ICSUBNAME3' ;
Attributes :=[paNullable] ;
DataType :=ftString ;
Size :=21 ;
Value :=Null ;
end ;
with FprocInsertOne.Parameters.AddParameterdo
begin
Name :='ICITEMCODE4' ;
Attributes :=[paNullable];
DataType :=ftString ;
Size :=21 ;
Value :=Null ;
end ;
with FprocInsertOne.Parameters.AddParameterdo
begin
Name :='ICSUBCODE4' ;
Attributes :=[paNullable] ;
DataType :=ftString ;
Size :=21 ;
Value :=Null ;
end ;
with FprocInsertOne.Parameters.AddParameterdo
begin
Name :='ICSUBNAME4' ;
Attributes :=[paNullable];
DataType :=ftString ;
Size :=21 ;
Value :=Null ;
end ;
with FprocInsertOne.Parameters.AddParameterdo
begin
Name :='IISEXPORT' ;
Attributes :=[paNullable];
DataType :=ftString ;
Size :=21 ;
Value :=Null ;
end ;
with FprocInsertOne.Parameters.AddParameterdo
begin
Name :='IMATERIALNO' ;
Attributes :=[paNullable];
DataType :=ftString ;
Size :=21 ;
Value :=Null ;
end ;
with FprocInsertOne.Parameters.AddParameterdo
begin
Name :='IOUTSTOCKDATE' ;
Attributes :=[paNullable];
DataType :=ftDateTime ;
size := 0 ;
Value :=Null ;
end ;
with FprocInsertOne.Parameters.AddParameterdo
begin
Name :='ICONTRACTNO' ;
Attributes :=[paNullable];
DataType :=ftString ;
Size :=21 ;
Value :=Null ;
end ;
with FprocInsertOne.Parameters.AddParameterdo
begin
Name :='ISHIPPINGDATE' ;
Attributes :=[paNullable];
DataType :=ftDateTime ;
size := 0 ;
Value :=Null ;
end ;
with FprocInsertOne.Parameters.AddParameterdo
begin
Name :='IARRIVEDATE' ;
Attributes :=[paNullable];
DataType :=ftDateTime ;
size := 0 ;
Value :=Null ;
end ;
end;

procedure TAccount.SetInsertOneParam;
begin
FprocCommit.ProcedureName := 'FCOMMIT_TEMP_ACCVOUCH';
with FprocCommit.Parameters.AddParameterdo
begin
Name :='Param1' ;
DataType :=ftInteger ;
Direction :=pdReturnValue ;
size := 0;
Value :=Null ;
end;
with FprocCommit.Parameters.AddParameterdo
begin
DataType := ftString;
Direction := pdInput;
Name := 'ICSIGN';
size := 21;
value := null;
end;
with FprocCommit.Parameters.AddParameterdo
begin
DataType := ftString;
Direction := pdInput;
Name := 'ICYEAR';
size := 20;
value := null;
end;
with FprocCommit.Parameters.AddParameterdo
begin
DataType := ftInteger;
Direction := pdInput;
Name := 'ICPERIOD';
size := 0;
value := null;
end;
with FprocCommit.Parameters.AddParameterdo
begin
DataType := ftString;
Direction := pdInput;
Name := 'Icvtshortname';
size :=21;
value := null;
end;
with FprocCommit.Parameters.AddParameterdo
begin
DataType := ftString;
Direction := pdInput;
Name := 'ILOGINUSER';
size := 21;
end;
end;

procedure TAccount.ShowResultMessage(Iresult: integer);
begin
IF iResult <> 0 then
FSubSum := 0;
case iResult of
0 : //数据处理成功
ShowMessage(PLEFT+IntToStr(iResult)+PRIGHT+PM0);
//-------------------------------------以下项目是必填项目,而没有填写时返回--------------------------------------------
1000:// 没有填写<单据制作人>
ShowMessage(PLEFT+IntToStr(iResult)+PRIGHT+PM1000);
1001:// 没有填写以下任一项 <期间、年度、凭证字>
ShowMessage(PLEFT+IntToStr(iResult)+PRIGHT+PM1001);
1002:// 没有填写 <凭证号>
ShowMessage(PLEFT+IntToStr(iResult)+PRIGHT+PM1002);
1004:// 没有填写<会计单位>
ShowMessage(PLEFT+IntToStr(iResult)+PRIGHT+PM1004);
1005:// 没有填写<制定部门>
ShowMessage(PLEFT+IntToStr(iResult)+PRIGHT+PM1005);
1006:// 没有填写<分录序号>
ShowMessage(PLEFT+IntToStr(iResult)+PRIGHT+PM1006);
1007:// 没有填写<分录会计单位>
ShowMessage(PLEFT+IntToStr(iResult)+PRIGHT+PM1007);
1008:// 没有填写<分录科目>
ShowMessage(PLEFT+IntToStr(iResult)+PRIGHT+PM1008);
1010:// 没有填写<核算数量>;该科目为数量核算;
ShowMessage(PLEFT+IntToStr(iResult)+PRIGHT+PM1010);
//------------------------------------以下是逻辑判断---------------------------------------------------------------
1003:// <凭证分录>重复;
同一年度、同一期间、同一类别、凭证号的凭证分录不能相同
ShowMessage(PLEFT+IntToStr(iResult)+PRIGHT+PM1003);
1009:// 借方和贷方 不能都有数值或者都没有值
ShowMessage(PLEFT+IntToStr(iResult)+PRIGHT+PM1009);
4000:// <凭证号>重复, 同一年度、同一期间、同一类别的凭证号不能相同
ShowMessage(PLEFT+IntToStr(iResult)+PRIGHT+PM4000);
//------------------------以下错误类别:如果该会计科目需要填写以下内容而没有填写时返回--------------------
1011:// 没有填写<结算方式>
ShowMessage(PLEFT+IntToStr(iResult)+PRIGHT+PM1011);
1012:// 没有填写<票号>
ShowMessage(PLEFT+IntToStr(iResult)+PRIGHT+PM1012);
1013:// 没有填写<支付日期>
ShowMessage(PLEFT+IntToStr(iResult)+PRIGHT+PM1013);
1014:// 没有填写<利息率>
ShowMessage(PLEFT+IntToStr(iResult)+PRIGHT+PM1014);
1015:// 没有填写<银行名称>
ShowMessage(PLEFT+IntToStr(iResult)+PRIGHT+PM1015);
1016:// 没有填写<账号>
ShowMessage(PLEFT+IntToStr(iResult)+PRIGHT+PM1016);
1017:// 没有填写<发行日>
ShowMessage(PLEFT+IntToStr(iResult)+PRIGHT+PM1017);
1018:// 没有填写<到期日>
ShowMessage(PLEFT+IntToStr(iResult)+PRIGHT+PM1018);
1019:// 没有填写<预计收款日>
ShowMessage(PLEFT+IntToStr(iResult)+PRIGHT+PM1019);
1020:// 没有填写<期限>
ShowMessage(PLEFT+IntToStr(iResult)+PRIGHT+PM1020);
1021:// 没有填写<发行社>
ShowMessage(PLEFT+IntToStr(iResult)+PRIGHT+PM1021);
1022:// 没有填写<客户编码>
ShowMessage(PLEFT+IntToStr(iResult)+PRIGHT+PM1022);
1023:// 没有填写<税率>
ShowMessage(PLEFT+IntToStr(iResult)+PRIGHT+PM1023);

1030:// 没有填写<分录摘要>
ShowMessage(PLEFT+IntToStr(iResult)+PRIGHT+PM1030);
1040:// 没有填写<内销/外销 0内销 1外销>
ShowMessage(PLEFT+IntToStr(iResult)+PRIGHT+PM1040);
1041:// 没有填写<商品编号>
ShowMessage(PLEFT+IntToStr(iResult)+PRIGHT+PM1041);
1042:// 没有填写<出货日>
ShowMessage(PLEFT+IntToStr(iResult)+PRIGHT+PM1042);
1043:// 没有填写<合同号>
ShowMessage(PLEFT+IntToStr(iResult)+PRIGHT+PM1043);
1044:// 没有填写<装船日>
ShowMessage(PLEFT+IntToStr(iResult)+PRIGHT+PM1044);
1045:// 没有填写<靠港日>
ShowMessage(PLEFT+IntToStr(iResult)+PRIGHT+PM1045);

3000:// 没有填写完全和凭证对应的<管理项目>
ShowMessage(PLEFT+IntToStr(iResult)+PRIGHT+PM3000);
//-------------------------------------------------------------------------------------------------------------------------------------
2000:// 借贷不平衡 
ShowMessage(PLEFT+IntToStr(iResult)+PRIGHT+PM2000);
999://运行时类型不匹配
ShowMessage(PLEFT+IntToStr(iResult)+PRIGHT + MO999);
888:
ShowMessage(PLEFT+IntToStr(iResult)+PRIGHT + MO888);
end;
end;

end.
 
在使用前当然要保证类的创建,我在这种情况时一般在dll外创建,就像Windows的好多函数都需要传递Pchar类型,而这个类型的参数一般需要在使用前分配空间一样。
 

TrustMe:
你在外面何得到该类的定义???
 
以我的理解(我水平有限),就像Windows提供的好多类,Delphi都用相应的Pascal类接口单元,我不知道,您这个是不是也需要这样。
其实,在Dll中定义类以属过时,你满可以把他们写成Activex控件或OLE
 
我感觉,你要把上面的单元提供给用户,用户才能用你的DLL.(这只是我的理解,还是那句话,我水平有限,我使用DLL一般只引出函数或过程)
 
我以前本打算写,我对com+,activx不是很熟悉。项目紧,那时我还不如不用类。唉
 
再等等吧,会有高手的
 
高手们,我期待你们的回答。如有其他方案。也可以
 
用 DLL 引出对象,对象的创建是在 DLL 中实现的。
 
当然,哼哼...
会者不难,如果不会 ..:(
 
对象在哪儿创建并不是大问题,关键是DLL外对象的引用
 
帮顶一下
 
我也只有顶的份了,听课啊—
 
lgxyy:
我想过勇,能否给个提示
强@子:
能否给个例子,又要创建又要处理其他动作!
在内部实现以下功能
PAccount := TAccount.create(nil);
PAccount.Connection := ADOConnection1;
tt := TstringList.Create;
for j := 0 to 1do
//行数
begin
tt.Clear;
for i:= 0 to 50do
//列数
tt.Add(StringGrid1.Cells[i,j]);
//----------------------添加一行数据------------------------
PAccount.AddData(tt);
//通过循环添加多行数据
//----------------------------------- ----------------------
end;
//----------------------提交数据----------------------------
PAccount.CreateAccount;
//----------------------------------------------------------
PAccount.Free;
pAccount := nil;
 
后退
顶部