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;

解决方案 »

  1.   

    嗯,你的这个函数没有返回True的情况,因为Function的默认返回值是False,你也没有设置Result为true的语句。vOptions.Clear;这句没什么用。从代码看那个内存错应该是GetDBOption里面了,跟踪看一下吧。
      

  2.   

    指针类的返回必须是有效的!
    function xx: tstrings;
    ..
    result := TStringlist.create
    ...
    end;
    用完后还需要Free的,所以没必要时,不要使用这种结构http://lysoft.7u7.net
      

  3.   

    TStrings是抽象类,不能直接创建为对象,可用TStringList代替。
      

  4.   

    在程序开头处加一句:Result := true; //这样就不会有编译警告
    固计是GetDBOption函数内部有错