webservice 返回动态数组时内存释放问题 ( 积分: 200 )

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

zouqh

Unregistered / Unconfirmed
GUEST, unregistred user!
情况是这样的,我需要使用webservice返回黑名单表中的数据,
webservice调用一个函数返回批量数据.
代码如下:
function GetbatchDatas_blackman():TWideStringDynArray ;
var
i,j,ntot:integer;
s:widestring;
begin
with webdm do
begin
try
adoquerypub.Close;
adoquerypub.sql.Text:=' select count(*) as ntot from BlackMan '
+' where 1>0'
;
adoquerypub.open;
ntot:= adoquerypub.fieldbyname('ntot').asinteger;
setlength(result,ntot);
adoquerypub.Close;
adoquerypub.sql.Text:=' select * from BlackMan '
+' where 1>0 '
;
adoquerypub.open;
adoquerypub.First;
i:=0;
while not adoquerypub.Eof do
begin
s:='';
for j:=0 to adoquerypub.FieldCount-1 do
s:=s+adoquerypub.Fields[j].asstring+'|';
result:=s;
i:=i+1;
adoquerypub.Next;
end;
finally
adoquerypub.Close;
end;
end; {with}
end;
程序是可以通过的,客户端也能调用。
但我用客户测试很多次后,发现服务器内存在减少,如果客户机运行10000次后,服务器几乎没有可用的内存。
我想问下,在服务器端 返回一个 setlength动态数组,需要在服务器端释放内存吗?如果需要释放怎么释放!
 
情况是这样的,我需要使用webservice返回黑名单表中的数据,
webservice调用一个函数返回批量数据.
代码如下:
function GetbatchDatas_blackman():TWideStringDynArray ;
var
i,j,ntot:integer;
s:widestring;
begin
with webdm do
begin
try
adoquerypub.Close;
adoquerypub.sql.Text:=' select count(*) as ntot from BlackMan '
+' where 1>0'
;
adoquerypub.open;
ntot:= adoquerypub.fieldbyname('ntot').asinteger;
setlength(result,ntot);
adoquerypub.Close;
adoquerypub.sql.Text:=' select * from BlackMan '
+' where 1>0 '
;
adoquerypub.open;
adoquerypub.First;
i:=0;
while not adoquerypub.Eof do
begin
s:='';
for j:=0 to adoquerypub.FieldCount-1 do
s:=s+adoquerypub.Fields[j].asstring+'|';
result:=s;
i:=i+1;
adoquerypub.Next;
end;
finally
adoquerypub.Close;
end;
end; {with}
end;
程序是可以通过的,客户端也能调用。
但我用客户测试很多次后,发现服务器内存在减少,如果客户机运行10000次后,服务器几乎没有可用的内存。
我想问下,在服务器端 返回一个 setlength动态数组,需要在服务器端释放内存吗?如果需要释放怎么释放!
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
670
import
I
后退
顶部