请教一个问题?(10分)

  • 主题发起人 主题发起人 wataki
  • 开始时间 开始时间
W

wataki

Unregistered / Unconfirmed
GUEST, unregistred user!
function Get_File(Path:string):TStrings
//Path就是制定的路径,得到文件的列表以TStrings返回
const FileAttrs = faAnyFile and (not fadirectory);
var
SRec: TSearchRec;
FindResult:Integer;
begin
Result:=TStringList.Create

FindResult:=FindFirst (Path+'/'+'*.*', FileAttrs, SRec);
//^^^^^------此处可以进行文件类型的过滤
while FindResult= 0 do
begin
if (SRec.Name <&gt
'.') and (SRec.Name <&gt
'..') then
begin
Result.Add(SRec.Name);
FindResult:=FindNext(SRec);
end;
end;
FindClose (SRec);
end;

以上函数的Result会不会自动释放呢?
 
不会自动释放.
好的办法是你从参数表中传入TStringList对象,在函数操作它.
TStringList的构造和释放由外部维护.
function Get_File(Path:string
list:TStrings):boolean

const FileAttrs = faAnyFile and (not fadirectory);
var
SRec: TSearchRec;
FindResult:Integer;
begin
Result := false;
if list = nil then
exit;

list.Clear;
FindResult:=FindFirst (Path+'/'+'*.*', FileAttrs, SRec);
while FindResult= 0 do
begin
if (SRec.Name <> '.') and (SRec.Name <> '..') then
begin
list.Add(SRec.Name);
FindResult:=FindNext(SRec);
end;
end;
FindClose (SRec);
Result := true;
end;
 
释放了 你怎么得到结果啊? ^_^
 
不会自动释放
 
list传入的应该是一个指针吧?
 
比如:
将入TListBox的示例:
Get_File('c:/', lbFiles.Items):

就将c:/下的文件列表将载到lbFiles中了.
 
function Get_File(Path:string
VAR list:TStrings):boolean

还要加个VAR吧??
 
这里好像不用加的
 
不是好像,是肯定不用加。
对象的实例名都是指针,值为地址。
呵呵
 
那么是不是说函数的返回结果是对象时该对象就没有办法释放了?
 
调函数前声明的对象,不创建,直接Assign得到,然后就可以释放了
 
hellorookie请给出代码,谢谢
 
多人接受答案了。
 

Similar threads

I
回复
0
查看
440
import
I
I
回复
0
查看
647
import
I
I
回复
0
查看
481
import
I
I
回复
0
查看
586
import
I
后退
顶部