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调用一个函数返回批量数据.
代码如下:
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动态数组,需要在服务器端释放内存吗?如果需要释放怎么释放!