function TserverFrmMain.GetNewsFileList(dt1:Longint;dt2:Longint):TStringList;
var
Temp:Longint;
S1:String;
vSearchRec: TSearchRec;
begin
Result := TStringList.Create;
S1 := DateTimeToStr(GetDate(Temp)); //得到时间文件夹名
if FindFirst('D:\test\*.*', faAnyFile and not faDirectory,vSearchRec) = 0 then
begin
repeat
Result.Add(vSearchRec.Name);
until FindNext(vSearchRec) <> 0;
FindClose(vSearchRec);
end;
//Result.Free; //这里不能加释放,会报错
end;
内次调用这个函数,内存都会增长,不知道怎么释放啊.Free语句不能写,一写就抱内存读取错误。
请指教.
var
Temp:Longint;
S1:String;
vSearchRec: TSearchRec;
begin
Result := TStringList.Create;
S1 := DateTimeToStr(GetDate(Temp)); //得到时间文件夹名
if FindFirst('D:\test\*.*', faAnyFile and not faDirectory,vSearchRec) = 0 then
begin
repeat
Result.Add(vSearchRec.Name);
until FindNext(vSearchRec) <> 0;
FindClose(vSearchRec);
end;
//Result.Free; //这里不能加释放,会报错
end;
内次调用这个函数,内存都会增长,不知道怎么释放啊.Free语句不能写,一写就抱内存读取错误。
请指教.
解决方案 »
- 高手请进,dll中如何使用exe传过来的handle问题
- 有关fastreport报表显示的问题?
- delphi,TDBGridEh导出excel的问题
- 请问如何向SQL Server2000存入文件?
- 输入问题?
- 我做的ActiveForm在客户端可以下载安装,可是却不显示出来,这是咋回事?
- 如过有个字段为日期型,如何查询在两个日期段内的数据
- adoquery的问题
- ????高手:delphi6中如何实现接口的包容与聚合????
- 关于在系统托盘中的图标的问题。shell_notifyicon的格式是如何的,能不能给个例子。notifyicondata的定义是什么?
- Delphi + 水晶报表:“未能加载数据厍信息”问题
- 如何模糊比较2个图像??
procedure TserverFrmMain.Button1Click(Sender Tobject);
var
FileList:TStringList;
begin
FileList :=TStringList.Create;
GetNewsFileList(0,0,FileLIst);
end
function TserverFrmMain.GetNewsFileList(dt1:Longint;dt2:Longint;var List:TStringList):integer;
var
Temp:Longint;
S1:String;
vSearchRec: TSearchRec;
begin
Result := 0;
S1 := DateTimeToStr(GetDate(Temp)); //得到时间文件夹名
if FindFirst('D:\test\*.*', faAnyFile and not faDirectory,vSearchRec) = 0 then
begin
repeat
List.Add(vSearchRec.Name);
until FindNext(vSearchRec) <> 0;
FindClose(vSearchRec);
end;
Result := List.count;
end;
procedure TserverFrmMain.Button1Click(Sender Tobject);
var
FileList:TStringList;
begin
FileList :=TStringList.Create;
GetNewsFileList(0,0,FileLIst);
end
function TserverFrmMain.GetNewsFileList(dt1:Longint;dt2:Longint; List:TStringList):integer;
var
Temp:Longint;
S1:String;
vSearchRec: TSearchRec;
begin
Result := 0;
S1 := DateTimeToStr(GetDate(Temp)); //得到时间文件夹名
if FindFirst('D:\test\*.*', faAnyFile and not faDirectory,vSearchRec) = 0 then
begin
repeat
List.Add(vSearchRec.Name);
until FindNext(vSearchRec) <> 0;
FindClose(vSearchRec);
end;
Result := List.count;
end;
====
不是until FindNext(vSearchRec) = 0;么?
没有释放,当然内存涨了。 不要这样写,不好。就是弄成一个参数传进来。外面创建好再传入,用完外面释放,就OK了。
Result := TStringList.Create;
如果你这么写,就得在函数外释放!!!
最好用指针
function A: TStringList;
begin
Result := TStringList.Create;
....
end;procedure B;
var
C: TStringList;
begin
C := A;
// do something;
C.Free; //用完释放,
end;