function TForm1.DoCopyTStrings(A: TStrings): TStrings;
var
I,nCount: Integer;
oCopy: TStrings;
begin
oCopy := TStringList.Create;
nCount := A.Count;
for I := 0 to nCount - 1 do
begin
oCopy.Add(A[I]);
end;
Result := oCopy;
oCopy.Free;
end;
我写了这么一个函数用于复制一个TStrings
在另外一个函数中调用这个函数 oTime := DoCopyTStrings(ArrTime);
ArrTime是一个TStrings,长度是3
oTime的长度就是0
是不是因为执行了oCopy.Free; 如果去掉这句 oTime的长度就是3了 但是会内存溢出啊 求解
var
I,nCount: Integer;
oCopy: TStrings;
begin
oCopy := TStringList.Create;
nCount := A.Count;
for I := 0 to nCount - 1 do
begin
oCopy.Add(A[I]);
end;
Result := oCopy;
oCopy.Free;
end;
我写了这么一个函数用于复制一个TStrings
在另外一个函数中调用这个函数 oTime := DoCopyTStrings(ArrTime);
ArrTime是一个TStrings,长度是3
oTime的长度就是0
是不是因为执行了oCopy.Free; 如果去掉这句 oTime的长度就是3了 但是会内存溢出啊 求解
Dest: TStrings;Dest.Assign(Source);不行吗?
。可以这样定义
Procedure TForm1.DoCopyTStrings(A: TStrings;var B:TStrings); ,外部创建好传入B,
在内部B不要创建,只管复制就好了
你在之前free了,当然为0了。
var
I,nCount: Integer;
begin
Result := TStringList.Create;
nCount := A.Count;
for I := 0 to nCount - 1 do
begin
Result .Add(A[I]);
end;
end;调用:var
T: TStrings;
begin
T := DoCopyTStrings(A);
//dosomething with T
T.Free;
end;