有没有类似的写法:
Function GetInfo(x,y):TMapInfo or TNewMapInfo;
请指点。谢谢!

解决方案 »

  1.   

    如果返回对象, 可以通过向上转型实现, 如果返回类型定为TObject, 接收方再通过判断后强制转换为实际类型如果是多个不同类型的返回结果, 可以通过TList类型返回, 然后对列表项逐一判断并处理
      

  2.   

    Function GetInfo(x,y):TMapInfo;
    当然有,返回一个记录类型
    不过出于安全性和简单的考虑,记录类型的传递最好还是以地址传递或者指针传递,如:
    procedure GetInfo(var MapInfo: TMapInfo; X, Y: Integer);
    如果用上面的Function直接返回Function里面的一个记录变量,这样很不安全,
    因为函数里面变量的存放位置是栈上,退出函数后变量也就释放了,你可以去看下堆栈的相关知识。
      

  3.   

    或者建立一个并集的类型:
    Ttype2=record
    isnew:boolean;
    d1:Tmapinfo;
    d2:Tnewmapinfo;
    end;
    当然,还是返回指针最好
      

  4.   

    无类型参数,像这样:procedure GetInfo(var MapInfo; X, Y: Integer);
      

  5.   

    procedure GetInfo(out MapInfo: TMapInfo; out NewMapInfo: TNewMapInfo);