DLL开发出来的方法:unit ReportDLLFun;
//-------------------
// 接口单元(实现.net报表打印)
//-------------------//TReportCom是一个类interface
uses ReportComDLL_Type,Windows, SysUtils,SyncObjs;Function Report(FunOnGtReportCom: TOnGtReportCom;const Template: PChar;var RetValue: PChar;var RetValueLen: Integer): Boolean;StdCall;
implementationFunction Report(FunOnGtReportCom: TOnGtReportCom;const Template: PChar;var RetValue: PChar;var RetValueLen: Integer): Boolean;StdCall;
var
sWideBuf: string;
ReportCom: TReportCom;
begin
try
ReportCom := TReportCom.Create;
try
RetValue := '';
RetValueLen := 0;
with ReportCom do
begin
Set_GtReportCom(FunOnGtReportCom);
Set_Template(StrPas(Template));
sWideBuf := Get_Report();
RetValue := StrAlloc(Length(sWideBuf));
CopyMemory(RetValue,PChar(sWideBuf),Length(sWideBuf));
RetValueLen := Length(sWideBuf);
end;
except
end;
finally
Result := True;
end;
end;
initialization
IsMultiThread := True;
finalizationend.我在自己的机器上运行多个IE页面同时打印,就会出现问题。
//-------------------
// 接口单元(实现.net报表打印)
//-------------------//TReportCom是一个类interface
uses ReportComDLL_Type,Windows, SysUtils,SyncObjs;Function Report(FunOnGtReportCom: TOnGtReportCom;const Template: PChar;var RetValue: PChar;var RetValueLen: Integer): Boolean;StdCall;
implementationFunction Report(FunOnGtReportCom: TOnGtReportCom;const Template: PChar;var RetValue: PChar;var RetValueLen: Integer): Boolean;StdCall;
var
sWideBuf: string;
ReportCom: TReportCom;
begin
try
ReportCom := TReportCom.Create;
try
RetValue := '';
RetValueLen := 0;
with ReportCom do
begin
Set_GtReportCom(FunOnGtReportCom);
Set_Template(StrPas(Template));
sWideBuf := Get_Report();
RetValue := StrAlloc(Length(sWideBuf));
CopyMemory(RetValue,PChar(sWideBuf),Length(sWideBuf));
RetValueLen := Length(sWideBuf);
end;
except
end;
finally
Result := True;
end;
end;
initialization
IsMultiThread := True;
finalizationend.我在自己的机器上运行多个IE页面同时打印,就会出现问题。
但至少存在一个问题:ReportCom的资源没有释放