关于返回TStrings类型的怪问题。急救!!!

寒星 2001-09-29 10:35:23
代码如下:
function TMainFrm.GetTables(sSection: String): TStrings;
var
SysIni: TIniFile;
SecValues: TStrings;
strFile,ErrMsg: String;
begin
SysIni := TIniFile.Create(‘c:\Tables.INI');
try
SecValues := TStringList.Create;
try
SysIni.ReadSectionValues(sSection,SecValues);
SecValues := RetIniValue(SecValues);

GetTables := SecValues;
finally
SecValues.Free;
end;
finally
SysIni.Free;
end;
end;

procedure TMainFrm.Button1Click(Sender: TObject);
begin
sTables := TStringList.Create;
try
sTables := GetTables(SrvName);
showmessage(inttostr(sTables.count));
//这里报“Access Violation at address 00000000,Read of Address 00000000”,也不知道是什么问题。
finally
sTables.Free;
end;
end;

//但调用这个返回值为TStrings的函数就是正常的。
function TMainFrm.RetIniValue(IniValues: TStrings): TStrings;
var
i: integer;
begin
for i:=0 to IniValues.count - 1 do
begin
IniValues.Strings[i] := RetIniValue(IniValues.Strings[i])
end;

Result := IniValues;
end;
...全文
64 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
寒星 2001-10-10
  • 打赏
  • 举报
回复
谢谢各位。
光明山人 2001-09-29
  • 打赏
  • 举报
回复
我也来改一改:

function TMainFrm.GetTables(sSection: String): TStrings;
var
SysIni: TIniFile;
SecValues: TStrings;
strFile,ErrMsg: String;
begin
SysIni := TIniFile.Create(‘c:\Tables.INI');
try
SecValues := TStringList.Create;
try
SysIni.ReadSectionValues(sSection,SecValues);
SecValues := RetIniValue(SecValues);

GetTables := SecValues;
except // 改成except,应付异常情况
SecValues.Free; // 出异常了,将它释放
GetTables := nil; // 返回值只好为空
raise; // 你在外面没有判断返回值,只好在这里继续触发
end;
finally
SysIni.Free;
end;
end;
chechy 2001-09-29
  • 打赏
  • 举报
回复
替你修改一下:
function TMainFrm.GetTables(sSection: String): TStrings;
var
SysIni: TIniFile;
SecValues: TStrings;
strFile,ErrMsg: String;
begin
SysIni := TIniFile.Create(‘c:\Tables.INI');
try
SecValues := TStringList.Create;
try
SysIni.ReadSectionValues(sSection,SecValues);
SecValues := RetIniValue(SecValues);

GetTables := SecValues;
finally
//SecValues.Free; //注释此句,这里,你将返回值释放了,所以当然要出错。
end;
finally
SysIni.Free;
end;
end;

5,379

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧