TAdostring := Tstringlist.Create;
TFieldstring := Tstringlist.Create;
try
调用一个公共模块同样含两个Tstringlist
ExporttoExcel(TAdostring,TFieldstring);
finally
TAdostring.Free; //开始报错
TFieldstring.Free;
解决方案 »
- 有关冲正的问题,不太懂
- TListView的拖动问题 + 散分
- 请问那里有关于 richedit用法的资料?
- 关于一个FORM的打印问题
- 如何将DBGRID中的记录存为TXT文件,并按一定的格式?
- 求FastReport+Delphi制作的一个报表例子,迅速给分!
- 我问了半天这个问题,可是没有人回答对阿,到底我该怎么办
- 字符型字段与数值比较的问题??????????????????
- 那位知道怎样预览AutoCAD图象文件.即(.Dwg)文件
- 我使用LMD控件组,Delphi6提示少了很多的*.pas和*.dcu文件怎么办啊,而且我使用了
- 怎么样得到 treeview中父节点下的子节点的所有内容?
- 动态添加菜单问题(在线等待)
TADOString,
TFieldString: TStringList;
procedure ExportToExcel(fSDOString,fFieldString: TStringList);
begin
end;
begin
TAdostring := Tstringlist.Create;
TFieldstring := Tstringlist.Create;
try
//调用一个公共模块同样含两个Tstringlist
ExporttoExcel(TAdostring,TFieldstring);
finally
TAdostring.Free; //开始报错
TFieldstring.Free;
end;
end;
我按上面写,没出错呀!是不是你的‘ExporttoExcel’有误?
我的Exporttoexcel的写法也不复杂
Tempform := TForm_CM_EXLEXPORT.Create(Application);
Tempform.Adostring := TAdostring;
Tempform.Fieldstring := TFieldstring;
if Tempform.ShowModal = mrOK then
begin
end;
Result := True;
finally
Tempform.Free;
end;
Tempform在Create时创建这两个Stringlist,close时释放
宠辱不惊,看庭前花开花落,去留无意;毁誉由人,望天上云卷云舒,聚散任风。
————————————————————————————————————
宠辱不惊,看庭前花开花落,去留无意;毁誉由人,望天上云卷云舒,聚散任风。
————————————————————————————————————
Tempform.Fieldstring := TFieldstring;
========================================
你引用指针了,应该这样子:
Tempform.Adostring.Assign(TAdostring);
Tempform.Fieldstring.Assign(TFieldstring);
这样子在Tempform.free时就不会把TAdostring,TFieldstring也释放了.
宠辱不惊,看庭前花开花落,去留无意;毁誉由人,望天上云卷云舒,聚散任风。
————————————————————————————————————
我不明白的是:
Tempform.Adostring := TAdostring;
Tempform.Fieldstring := TFieldstring;
为什么Tempform的Stringlist释放也会把原赋值的释放而已
Tempform.Fieldstring := TFieldstring;
改成Assign后则可,这说明是连带的
...
就可,不用 free
我不明白的是:
Tempform.Adostring := TAdostring;
Tempform.Fieldstring := TFieldstring;
为什么Tempform的Stringlist释放也会把原赋值的释放而已
delphi中的对象都是指针,TempForm.AdoString和TAdostring都是指向同一个对象,其中一个
释放对象,另外一个就成了无效指标,没有有效对象了。
TO: lxpbuaa(桂枝香在故国晚秋)
>>何必Assign呢?关键的是你首先要确定是调用者还是执行者(TForm_CM_EXLEXPORT)Free它们。>>你这里最好是调用者Free,因此在TForm_CM_EXLEXPORT.Destroy中不要Free这两个字符串列表。
这是个程序的设计思想问题,模块间的接口就要最大的透明化,如果那个ExporttoExcel是别人提供
的话,这样如果不注意保护接口变量的话,出了问题都无法调试.