关于tstrings的错误

shaken 2005-03-29 05:17:06
function DBOptionOK: boolean;
var
vOptions: TStrings;
i: integer;
begin
vOptions := TStringList.Create;
vOptions.Clear;
vOptions.AddStrings(GetDBOption);
try
for i := 0 to vOptions.Count - 1 do
begin
if vOptions.Strings[i] = '' then
begin
result := False;
break;
end;
end;
finally
vOptions.Free;
end;

end;

编译时提示:[Warning] pubfunction.pas(415): Return value of function 'DBOptionOK' might be undefined
运行编译后的程序,提示读取内存错误。
请问以上语句哪里错了?
getDBOption是一个自定义函数,返回值为一个Tstrings类型。
定义如下:
function GetDBOption: TStrings;
...全文
122 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
largewang 2005-03-30
  • 打赏
  • 举报
回复
TStrings是抽象类,不能直接创建为对象,可用TStringList代替。
d0347 2005-03-30
  • 打赏
  • 举报
回复
为什么不用TStringList
sxy_9761 2005-03-30
  • 打赏
  • 举报
回复
在程序开头处加一句:Result := true; //这样就不会有编译警告
固计是GetDBOption函数内部有错
ly_liuyang 2005-03-29
  • 打赏
  • 举报
回复
指针类的返回必须是有效的!
function xx: tstrings;
..
result := TStringlist.create
...
end;
用完后还需要Free的,所以没必要时,不要使用这种结构

http://lysoft.7u7.net
blackdell 2005-03-29
  • 打赏
  • 举报
回复
嗯,你的这个函数没有返回True的情况,因为Function的默认返回值是False,你也没有设置Result为true的语句。

vOptions.Clear;这句没什么用。

从代码看那个内存错应该是GetDBOption里面了,跟踪看一下吧。

16,748

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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