SAFileOpr.TStandardFileOpr.Create 有一个子类的对象。这样创建的。
有一个函数function BaoDoSaveFile(FCalled:Boolean;Fobject:^TObject): Boolean; 这样定义的。
想在想把上面的对象传给函数。
请教这个函数定义是否正确。为什么会报^找不到。

解决方案 »

  1.   

    delphi中对传参数的语法限制很多,原则上必须用先声明好类型再传递。这与delphi编译器在处理类型的符号表的方式有关,例如下面的代码:
    var
      a : ^TObject;
      b : ^TObject;
    begin
      a := b;
      ...delphi会认为a和b的类型不同,可能是在处理的时候,为a、b生成了临时的类型,但在类型的符号表中不检查是否已经声明过相同的类型,所以认为a和b的类型不同。这也就意味着,在函数的声明与实现中,如果实现的部分也写了完整的声明(虽然实际上实现的部分可以不写),编译器会认为两者不一致。
    所以为了避免这种情况的发生,delphi的编译器对参数中的声明做了特殊规定多说一句,对于这个声明来说,最好用 var/out FObject:TObject 的方式传递参数,而不是采用指针的方式
      

  2.   

    function BaoDoSaveFile(FCalled:Boolean;Fobject: TObject): Boolean; 
    应该这样定义,对象类型本身就是指针。