1可能你忘了
setlength(a,Componentcount);lst :Tstrings;lst := TListstring.create;
lst.add
lst.free
setlength(a,Componentcount);lst :Tstrings;lst := TListstring.create;
lst.add
lst.free
解决方案 »
- 远程注入DLL后,如何让DLL自己退出
- 想把StringGrid控件中某一个格画上两种颜色,上面1/4为绿色,下面的为红色,请问代码该怎么写?
- Delphi编译提示[fatal error]file not found:'ExceptionLog.dcu'
- 如何把服务器上的数据库中的word读区到客户端的olecontainer中??
- 请教关于函数和Application属性问题
- 怎么样转换成Excel?
- 在canvas中显示文字如何换行,如Printer.Canvas.TextOut(x+8,y+8,arrFieldValue),arrFieldValue中加入#13#10?
- 有没有把.DCU文件反编译为.pas文件的工具?
- 初学者与高手的区别?
- 怎样使用相对路径访问文件?
- delphi与NT
- 版主:==>>奇怪了,这几天专家分涨的还快的,一天有一百来分,但是到“我得分的问题”里又找不到是什么问题让自己得分了,不知是什么原因???
不使用了再setlength(a,0)
lst :TListString;lst := TListstring.create;
lst.add()
lst.free
newyj(老鬼)
xxmmmx(踢踏)
我的Tstringlist是函数返回的,我在那里create和free?是调用处吗
另外:我如果声明一个全局的tstringlist,而在一个函数中调用时,我怎么判断是否应该create?
我的Tstringlist是函数返回的,我在那里create和free?是调用处吗
另外:我如果声明一个全局的tstringlist,而在一个函数中调用时,我怎么判断是否应该create?
function b:TStringList;
var
vsl:TStringList;
begin
vsl:=TStringList.Create;
......
Result:= vsl;
end;procedure a;
var
sl:TStringList;
begin
sl:= b;
....
sl.Free;
end;
sl := b;
showmessage(sl[1]);
sl.Free;
showmessage(sl[1]); // 内存读错,情理之中! 能否告知
但这种写法好像太别扭,得让函数的使用者处理函数内部资源的释放? 能给我指导一下?
to szchengyu(cy)
showmessage(sl[1]);
sl.Free; //这里的sl释放的是vsl的内存地址,你在sl释放后不能再使用它
showmessage(sl[1]); // 内存读错,情理之中!
vsl的内存地址被赋给了sl,因此sl不用创建,但必须释放 我已经试过了,可以 但我觉得这样不太规范,谁可以解释一下
另外我想问一下:delphi的数组或Tstringlist支持多少个元素? 3000行吗?是否与内存大小有关?
MaxInt
begin
vsl.Add('abc');
......
end;var
sl: TStringList;
begin
sl := TStringList.Create;
b(sl);
...
sl.Free;
end;